繁体   English   中英

预测时,tflearn.models.dnn.DNN是否会自动关闭辍学层并进行批量归一化?

[英]Does tflearn.models.dnn.DNN automatically turn off dropout layers and batch normalization when predicting?

我对神经网络很陌生,这就是为什么我决定使用Tflearn的原因,因为它非常直观。 但是我找不到我的问题的答案。 tflearn文档提供了以下示例,可让深度神经网络预测某些内容:

network = ...
model = DNN(network)
model.load('model.tflearn')
model.predict(X)

我在网络中插入了一些批处理规范化层,因为我的模型似乎过拟合。 model.predict()是否会自动“告诉”批处理规范化层,使其不像训练阶段那样? 还是我必须使用tflearn.config.is_training (is_training=False, session=None)

如果是,您知道我应该把这行放在哪里吗? 以及如何创建会话,使其像我的代码一样执行。 目前,它基本上看起来像是tflearn.org上的示例:

net = tflearn.input_data(shape=[None, 784])
net = tflearn.fully_connected(net, 64)
net = tflearn.dropout(net, 0.5)
net = tflearn.fully_connected(net, 10, activation='softmax')
net = tflearn.regression(net, optimizer='adam', 
loss='categorical_crossentropy')

model = tflearn.DNN(net)
model.fit(X, Y)

除了我使用批处理归一化层,并使用神经网络进行函数逼近。 不幸的是,我现在无法发布代码,因为它在另一台计算机上,但实际上基本上是相同的。

有人可以帮我解决这个问题吗?

提前致谢!

在训练和预测时,您需要将tflearn.is_training设置为True或False,tflearn将负责其余的工作。 定义模型后,您可以通过以下方法进行训练:

with tf.Session() as sess:
    tflearn.is_training(True, session=sess)
 model.fit(X, Y)

然后预测使用:

with tf.Session as sess:
    tflearn.is_training(False, session=sess)
model.predict(X)

暂无
暂无

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

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