警告:tensorflow:未将input_shape
传递给第一层的顺序模型无法重新加载其优化器状态。因此,您的模型将从新初始化的优化器开始。
在尝试加载保存的模型时,我从张量流中遇到了此警告
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)
答案 0 :(得分:1)
升级到TF 1.14后出现了相同的问题,我对此进行了修复,更改了第一层的定义:
model.add(tf.keras.layers.Flatten())
对此
model.add(tf.keras.layers.Flatten(input_shape=(28, 28)))
其中28是要展平的输入地图的大小(在我们的示例中为mnix像素)
答案 1 :(得分:0)
如警告所示,第一层需要参数input_shape
。在您的情况下,这将是Flatten
层。
在keras文档中,有一个额外的部分介绍了顺序API。有关更多信息,请参见here。
答案 2 :(得分:0)
model.add(tf.keras.layers.Flatten( input_shape =(28,28)))
对于tf 1.14之后的第一层,要求使用输入类型,即特定图像的尺寸。
或者在检索模型时可能会收到警告,导致优化器无法正常工作