繁体   English   中英

DNN - 找到最佳辍学率

[英]DNN - Find optimal dropout rate

有没有办法在不重新训练的情况下为我的 DNN 找到最佳丢失率?

也许一些子问题:

  • 在每个密集层之后有一个 dropout 是明智的吗?
  • 在最后有一个单独的 dropout 层并且只重新训练最后一层而不是整个 model 就足够了吗?
(X_train_full, y_train_full), (X_test, y_test) = keras.datasets.cifar10.load_data()

X_train = X_train_full[5000:]
y_train = y_train_full[5000:]
X_valid = X_train_full[:5000]
y_valid = y_train_full[:5000]

model_dropout = keras.models.Sequential()
model_dropout.add(keras.layers.Flatten(input_shape=[32, 32, 3]))
for _ in range(20):
    model_dropout.add(keras.layers.Dense(100, activation="relu"))
    model_dropout.add(keras.layers.Dropout(0.5)) #should be after each layer 

model_dropout.add(keras.layers.Dense(10, activation="softmax"))

# Compile the model
model_dropout.compile(loss="sparse_categorical_crossentropy",
              optimizer="adam",
              metrics=["accuracy"])

# Train the model
result_dropout = model_dropout.fit(X_train, y_train, epochs=100, validation_data=(X_valid, y_valid))

# Plot the learning curves
pd.DataFrame(result_dropout.history).plot(figsize=(8, 5))
plt.grid(True)
plt.show()

# Evaluate the model
model_dropout.evaluate(X_test, y_test)

Dropout主要用于对神经网络进行正则化,也是避免model过拟合的技术之一。 Dropout层中使用的 dropout_rate 是为了将上一层的一些特征归零,以优化 model。您可以在 model 定义中的任何层之后使用 dropout 层,并可以测试 model 的效率。 此外,您可以相应地调整 dropout 层数和 dropout_rate(在 0 和 1 之间浮动。要丢弃的输入单元的分数。)。

请检查链接以获取有关在 model 中添加丢失层的更多详细信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM