我正在尝试使用动量优化器来训练程序,但是当我输入“ 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))
我尝试用不同的方式键入动量,但似乎无法固定正确的名称。什么事?
答案 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"])