Python 在keras.compile中tf.train.AdamOptimizer和use adam之间有什么区别?
我正在建立一个密集的神经网络来预测扑克手。首先,我在可复制性方面遇到了一个问题,但后来我发现了我真正的问题:我不能复制我的代码是因为adam优化器,因为sgd起了作用。 这意味着Python 在keras.compile中tf.train.AdamOptimizer和use adam之间有什么区别?,python,tensorflow,optimization,keras,Python,Tensorflow,Optimization,Keras,我正在建立一个密集的神经网络来预测扑克手。首先,我在可复制性方面遇到了一个问题,但后来我发现了我真正的问题:我不能复制我的代码是因为adam优化器,因为sgd起了作用。 这意味着 model.compile(loss='sparse_categorical_crossentropy', optimizer='adam', metrics=['accuracy']) 不起作用,而 opti = tf.train.AdamOptimizer() model.compile(loss='sparse
model.compile(loss='sparse_categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
不起作用,而
opti = tf.train.AdamOptimizer()
model.compile(loss='sparse_categorical_crossentropy', optimizer=opti, metrics=['accuracy'])
具有再现性。
所以我现在的问题是:
使用有什么区别吗
tf.train.AdamOptimizer
及
因为复制问题,我想使用第一个。它们都是相同的。但是,在tensorflow.train.AdamOptimizer中,您可以更改学习速率
tf.compat.v1.train.AdamOptimizer(
learning_rate=0.001, beta1=0.9, beta2=0.999, epsilon=1e-08, use_locking=False,
name='Adam')
这将提高学习成绩,培训时间也会更长。但是在model.compile(optimizer=“adam”)中,它会将学习率、beta1、beta2…等设置为默认设置您所说的“可复制性”是什么意思?据我所知,keras
只是后端引擎的API,默认情况下是tensorflow
。因此,根据官方实现,无论何时使用adam
,您都在使用tf.train.AdamOptimizer
。
tf.compat.v1.train.AdamOptimizer(
learning_rate=0.001, beta1=0.9, beta2=0.999, epsilon=1e-08, use_locking=False,
name='Adam')