在Eager模式下仅支持TF本机优化器 我在以下尝试的每个优化程序中都遇到此错误:
def create_model():
model = tf.keras.models.Sequential([tf.keras.layers.Dense(512,activation=tf.nn.relu, input_shape=(784,)), tf.keras.layers.Dropout(0.2), tf.keras.layers.Dense(10, activation=tf.nn.softmax) ])
opt = tf.train.GradientDescentOptimizer
model.compile(optimizer = opt,
loss=tf.keras.losses.sparse_categorical_crossentropy, metrics= ['accuracy'])
return model
所以我的问题是,请问什么是“ TF本机优化器”? 谢谢。
答案 0 :(得分:2)
简短答案:从opt = tf.train.GradientDescentOptimizer
更改为opt = tf.train.GradientDescentOptimizer(<your desired learning rate>)
。
更长的答案:在上面提供的代码段中,您正在向tf.train.GradientDescentOptimizer
传递类(model.compile
)而不是对象。错误消息因此抱怨opt
参数的类型不正确。
希望有帮助。
((recent commit有望在以后的版本中产生更好的错误消息)
答案 1 :(得分:0)
除了ash的答案外,“ Eager模式仅支持TF本机优化器”错误的另一个可能原因是使用tf.keras优化器而不是tf.train优化器。
例如:
# Gives error
model.compile(loss='binary_crossentropy', optimizer='rmsprop', metrics=['accuracy'])
# Also gives error
model.compile(loss='binary_crossentropy', optimizer=tf.keras.optimizers.RMSprop(), metrics=['accuracy'])
# Correct
model.compile(loss='binary_crossentropy', optimizer=tf.train.RMSPropOptimizer(learning_rate=0.001), metrics=['accuracy'])