急切模式优化器

时间:2018-09-20 15:53:42

标签: tensorflow optimization

在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本机优化器”? 谢谢。

2 个答案:

答案 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'])