Мой вопрос, в основном, в чем разница в Керасе, если я
# 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:
...
в середине моего кода