Momentum Optimizer的正确名称是“ ValueError:未知优化程序:动量”?

时间:2019-11-23 19:04:08

标签: python tensorflow optimization

我正在尝试使用动量优化器来训练程序,但是当我输入“ momentum”作为优化器时,它给了我这个错误:

ValueError: Unknown optimizer: momentum

我使用的代码是:

import tensorflow as tf
from tensorflow import keras
import matplotlib.pyplot as plt
import numpy as np
import time

start_time = time.time()


data = tf.keras.datasets.fashion_mnist

(train_images, train_labels), (test_images, test_labels) = data.load_data()

class_names = ['T-shirt', 'Trouser', 'Pullover', 'Dress', 'Coat', 'Sandal', 'Shirt', 'Sneaker', 'Bag', 'Ankle Boot']

train_images = train_images/255.0

test_images = test_images/255.0

model = keras.Sequential([
                           keras.layers.Flatten(input_shape=(28, 28)),
                           keras.layers.Dense(100, activation="relu"),
                           keras.layers.Dense(10, activation="softmax")
])

model.compile(optimizer="Ftrl", loss="sparse_categorical_crossentropy", metrics=["accuracy"])

model.fit(train_images, train_labels, epochs=5)

test_loss, test_acc = model.evaluate(test_images, test_labels)

print("Test acc is:", test_acc)
print("--- %s seconds ---" % (time.time() - start_time))

我尝试用不同的方式键入动量,但似乎无法固定正确的名称。什么事?

1 个答案:

答案 0 :(得分:2)

Tensorflow没有简单的“动量”优化器:TensorFlow中的tensorflow.org/api_docs/python/tf/optimizers。 尽管Tutorialpoints对此进行了引用。

尽管如此,它仍具有MomentumOptimizer()类。

因此,您应该首先定义一个MomentumOptimizer()类实例,然后可以将其作为参数传递给compile()方法。

注意:您需要定义lr(学习率)和m(动量)参数。

momentum = tf.train.MomentumOptimizer(lr, m)
model.compile(optimizer=momentum, loss="sparse_categorical_crossentropy", metrics=["accuracy"])