没有传递到第一层的“input_shape”的顺序模型无法重新加载优化器状态
Sequentialmodels without `input_shape` passed to the 1st layer cannot reload optimizer state
警告:tensorflow:没有 input_shape
传递到第一层的顺序模型无法重新加载其优化器状态。因此,您的模型从新初始化的优化器开始。
在尝试加载已保存的模型时,我遇到了来自 tensorflow 的警告
import tensorflow.keras as keras
import tensorflow as tf
mnist = tf.keras.datasets.mnist
(x_train, y_train),(x_test, y_test) = mnist.load_data()
x_train = tf.keras.utils.normalize(x_train, axis=1)
x_test = tf.keras.utils.normalize(x_test, axis=1)
model = tf.keras.models.Sequential()
model.add(tf.keras.layers.Flatten())
model.add(tf.keras.layers.Dense(128, activation=tf.nn.relu))
model.add(tf.keras.layers.Dense(128, activation=tf.nn.relu))
model.add(tf.keras.layers.Dense(10, activation=tf.nn.softmax))
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
model.fit(x_train, y_train, epochs=3)
model.save('epic_num_reader.model')
new_model = tf.keras.models.load_model('epic_num_reader.model')
predictions = new_model.predict(x_test)
如警告所示,您的第一层需要参数 input_shape
。在您的情况下,这将是 Flatten
.
层
在 keras 文档中有一个关于顺序 API 的额外部分。有关详细信息,请参阅 here。
升级到TF 1.14后有同样的问题,我通过更改第一层的定义修复了这个问题:
model.add(tf.keras.layers.Flatten())
至此
model.add(tf.keras.layers.Flatten(input_shape=(28, 28)))
其中 28 是要展平的输入图的大小(在我们的例子中是 mnist 像素)
model.add(tf.keras.layers.Flatten(input_shape=(28, 28)))
对于 tf 1.14 之后的第一层,需要使用输入类型,即特定图像的尺寸。
或者您可能会在检索模型时收到警告,提示您的优化器无法正常工作
警告:tensorflow:没有 input_shape
传递到第一层的顺序模型无法重新加载其优化器状态。因此,您的模型从新初始化的优化器开始。
在尝试加载已保存的模型时,我遇到了来自 tensorflow 的警告
import tensorflow.keras as keras
import tensorflow as tf
mnist = tf.keras.datasets.mnist
(x_train, y_train),(x_test, y_test) = mnist.load_data()
x_train = tf.keras.utils.normalize(x_train, axis=1)
x_test = tf.keras.utils.normalize(x_test, axis=1)
model = tf.keras.models.Sequential()
model.add(tf.keras.layers.Flatten())
model.add(tf.keras.layers.Dense(128, activation=tf.nn.relu))
model.add(tf.keras.layers.Dense(128, activation=tf.nn.relu))
model.add(tf.keras.layers.Dense(10, activation=tf.nn.softmax))
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
model.fit(x_train, y_train, epochs=3)
model.save('epic_num_reader.model')
new_model = tf.keras.models.load_model('epic_num_reader.model')
predictions = new_model.predict(x_test)
如警告所示,您的第一层需要参数 input_shape
。在您的情况下,这将是 Flatten
.
在 keras 文档中有一个关于顺序 API 的额外部分。有关详细信息,请参阅 here。
升级到TF 1.14后有同样的问题,我通过更改第一层的定义修复了这个问题:
model.add(tf.keras.layers.Flatten())
至此
model.add(tf.keras.layers.Flatten(input_shape=(28, 28)))
其中 28 是要展平的输入图的大小(在我们的例子中是 mnist 像素)
model.add(tf.keras.layers.Flatten(input_shape=(28, 28)))
对于 tf 1.14 之后的第一层,需要使用输入类型,即特定图像的尺寸。
或者您可能会在检索模型时收到警告,提示您的优化器无法正常工作