Tensorflow 渴望模式优化器

Tensorflow 渴望模式优化器,tensorflow,optimization,Tensorflow,Optimization,在急切模式下仅支持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.sof

在急切模式下仅支持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原生优化器”是什么?
谢谢。

简短回答:从
opt=tf.train.GradientDescentOptimizer
更改为
opt=tf.train.GradientDescentOptimizer()

更详细的回答:在上面提供的代码片段中,您将传递一个类(
tf.train.GradientDescentOptimizer
),而不是对象到
model.compile
。因此,错误消息抱怨
opt
参数的类型不正确

希望有帮助


(A有望在未来的版本中产生更好的错误消息)

除了ash的回答之外,“在急切模式下仅支持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'])