dropout_keep_prob

本文介绍了dropout在训练神经网络时的应用,特别强调了dropout_keep_prob参数的作用。该参数仅在训练阶段有效,在测试阶段通常设置为1,即保留所有神经元不进行丢弃。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

测试时
dropout_keep_prob一般都设置为1,也就是保留全部结果
也就是说
dropout_keep_prob只在训练的时候有用
def model(self): num_classes = self.config.get("CNN_training_rule", "num_classes") seq_length = self.config.get("CNN_training_rule", "seq_length") conv1_num_filters = self.config.get("CNN_training_rule", "conv1_num_filters") conv1_kernel_size = self.config.get("CNN_training_rule", "conv1_kernel_size") conv2_num_filters = self.config.get("CNN_training_rule", "conv2_num_filters") conv2_kernel_size = self.config.get("CNN_training_rule", "conv2_kernel_size") hidden_dim = self.config.get("CNN_training_rule", "hidden_dim") dropout_keep_prob = self.config.get("CNN_training_rule", "dropout_keep_prob") model_input = keras.layers.Input((seq_length,1), dtype='float64') # conv1形状[batch_size, seq_length, conv1_num_filters] conv_1 = keras.layers.Conv1D(conv1_num_filters, conv1_kernel_size, padding="SAME")(model_input) conv_2 = keras.layers.Conv1D(conv2_num_filters, conv2_kernel_size, padding="SAME")(conv_1) max_poolinged = keras.layers.GlobalMaxPool1D()(conv_2) full_connect = keras.layers.Dense(hidden_dim)(max_poolinged) droped = keras.layers.Dropout(dropout_keep_prob)(full_connect) relued = keras.layers.ReLU()(droped) model_output = keras.layers.Dense(num_classes, activation="softmax")(relued) model = keras.models.Model(inputs=model_input, outputs=model_output) # model.compile(loss="categorical_crossentropy", # optimizer="adam", # metrics=["accuracy"]) model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) print(model.summary()) return model给这段代码每行加上注释
06-02
import torch.nn as nn from torch.nn import functional as F from facenet.inception_resnetv1 import InceptionResnetV1 from facenet.mobilenet import MobileNetV1 class mobilenet(nn.Module): def __init__(self): super(mobilenet, self).__init__() self.model = MobileNetV1() del self.model.fc del self.model.avg def forward(self, x): x = self.model.stage1(x) x = self.model.stage2(x) x = self.model.stage3(x) return x class inception_resnet(nn.Module): def __init__(self): super(inception_resnet, self).__init__() self.model = InceptionResnetV1() def forward(self, x): x = self.model.conv2d_1a(x) x = self.model.conv2d_2a(x) x = self.model.conv2d_2b(x) x = self.model.maxpool_3a(x) x = self.model.conv2d_3b(x) x = self.model.conv2d_4a(x) x = self.model.conv2d_4b(x) x = self.model.repeat_1(x) x = self.model.mixed_6a(x) x = self.model.repeat_2(x) x = self.model.mixed_7a(x) x = self.model.repeat_3(x) x = self.model.block8(x) return x class Facenet(nn.Module): def __init__(self, backbone="mobilenet", dropout_keep_prob=0.5, embedding_size=128, num_classes=None, mode="train"): super(Facenet, self).__init__() if backbone == "mobilenet": self.backbone = mobilenet() flat_shape = 1024 elif backbone == "inception_resnetv1": self.backbone = inception_resnet() flat_shape = 1792 else: raise ValueError('Unsupported backbone - `{}`, Use mobilenet, inception_resnetv1.'.format(backbone)) self.avg = nn.AdaptiveAvgPool2d((1,1)) self.Dropout = nn.Dropout(1 - dropout_keep_prob) self.Bottleneck = nn.Linear(flat_shape, embedding_size,bias=False) self.last_bn = nn.BatchNorm1d(embedding_size, eps=0.001, momentum=0.1, affine=True) if mode == "train": self.classifier = nn.Linear(embedding_size, num_classes) def forward(self, x): x = self.backbone(x) x = self.avg(x) x = x.view(x.size(0), -1) x = self.Dropout(x) x = self.Bottleneck(x) x = self.last_bn(x) x = F.normalize(x, p=2, dim=1) return x def forward_feature(self, x): x = self.backbone(x) x = self.avg(x) x = x.view(x.size(0), -1) x = self.Dropout(x) x = self.Bottleneck(x) before_normalize = self.last_bn(x) x = F.normalize(before_normalize, p=2, dim=1) return before_normalize, x def forward_classifier(self, x): x = self.classifier(x) return x
最新发布
05-28
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值