我的问题是,如果我这样做,基本上Keras有什么区别
# first method
sgd = SGD(lr=0.001, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss='binary_crossentropy',optimizer=sgd, metrics=['accuracy'])
或者简单地
# second method
model.compile(loss='binary_crossentropy',optimizer='sgd', metrics=['accuracy'])
两者都编译良好,但是当我这样做的时候
model.fit(x_train, y_train, epochs=20, batch_size=4)
第一个导致
ValueError: Tensor("training/SGD/Variable:0", shape=(11, 11, 4, 96),
dtype=float32_ref) must be from the same graph as Tensor("SGD/momentum/read:0",
shape=(), dtype=float32).
在第二种方法中,我使用默认的“ sgd”优化器,网络可以正常训练。
该错误似乎表明2个张量不是来自同一张图,但我想这与导入的SGD有关吗?
我还在不同的模型上尝试了第一种方法,令人惊讶的是它不会导致错误。我认为它不应该依赖模型架构。
为什么会这样?
Keras版本:2.2.4
Python版本:3.6.5
TensorFlow版本:1.13.1
编辑
我不好,我有一个
tf.reset_default_graph()
with tf.Session() as test:
...
在我的代码中间