在Keras中创建了模型之后,我想得到渐变,并使用tf.train.AdamOptimizer公司班级。但是,由于我使用的是一个退出层,我不知道如何告诉模型它是否处于训练模式。不接受training关键字。代码如下:
net_input = Input(shape=(1,))
net_1 = Dense(50)
net_2 = ReLU()
net_3 = Dropout(0.5)
net = Model(net_input, net_3(net_2(net_1(net_input))))
#mycost = ...
optimizer = tf.train.AdamOptimizer()
gradients = optimizer.compute_gradients(mycost, var_list=[net.trainable_weights])
# perform some operations on the gradients
# gradients = ...
trainstep = optimizer.apply_gradients(gradients)
我得到了相同的行为有和没有辍学层,即使有辍学rate=1
。如何解决这个问题?在
Keras层继承自tf.keras.层.层类。kerasapi用
model.fit
在内部处理这个问题。如果Keras Dropout与纯TensorFlow训练循环一起使用,它在其调用函数中支持训练参数。在所以你可以用
来自官方的TF文件
正如@Sharky已经说过的,在调用
Dropout
类的call()
方法时,可以使用training
参数。但是,如果你想在tensorflow图形模式下训练,你需要传递一个占位符,并在训练期间给它输入布尔值。以下是适用于您的案例的高斯斑点拟合示例:相关问题 更多 >
编程相关推荐