Python Tensorflow keras模型_负载错误:值错误:应定义“稠密”输入的最后一个维度。没有找到`
我构建了一个模型,它由一个预先学习的模型和一些添加到末尾的层组成。一切正常,我可以在我的数据集上训练模型,并将训练过的模型保存到文件中。但是当我尝试加载保存的模型时,我得到了以下错误。我发现这表明致密层的形状没有定义。但是,我在训练之前指定了模型的输入形状,并确保生成的密集层具有预定的形状。不知道如何解决这个问题 这就是设计的模型Python Tensorflow keras模型_负载错误:值错误:应定义“稠密”输入的最后一个维度。没有找到`,python,tensorflow,keras,Python,Tensorflow,Keras,我构建了一个模型,它由一个预先学习的模型和一些添加到末尾的层组成。一切正常,我可以在我的数据集上训练模型,并将训练过的模型保存到文件中。但是当我尝试加载保存的模型时,我得到了以下错误。我发现这表明致密层的形状没有定义。但是,我在训练之前指定了模型的输入形状,并确保生成的密集层具有预定的形状。不知道如何解决这个问题 这就是设计的模型 import tensorflow as tf from tensorflow.keras.utils import Sequence from tensorflow
import tensorflow as tf
from tensorflow.keras.utils import Sequence
from tensorflow.keras.applications.vgg16 import VGG16
from keras.layers.core import Dense, Dropout, Activation, Flatten
from tensorflow.keras.applications.vgg16 import VGG16
def create_model():
model = tf.keras.Sequential()
model.add(tf.keras.layers.Input((320, 640, 3)))
vgg_model = VGG16(weights='imagenet', include_top=False)
model.add(vgg_model)
model.add(tf.keras.layers.Flatten())
model.add(tf.keras.layers.Dense(256))
model.add(tf.keras.layers.Activation('relu'))
model.add(tf.keras.layers.Dropout(0.5))
model.add(tf.keras.layers.Dense(128))
model.add(tf.keras.layers.Activation('relu'))
model.add(tf.keras.layers.Dropout(0.5))
model.add(tf.keras.layers.Dense(1))
model.add(tf.keras.layers.Activation('linear'))
optimizer = tf.keras.optimizers.Adam(learning_rate = 0.0001)
model.compile(loss = 'mean_squared_error', optimizer = optimizer)
return model
model = create_model()
model.fit(data_generator, epochs = 1)
model.save(model_folder + '/model.h5')
在我的数据集上训练完模型后,我尝试将其加载到另一个脚本中
model = tf.keras.models.load_model(model_folder + '/model.h5')
这将导致以下错误
raise ValueError('The last dimension of the inputs to `Dense` '
ValueError: The last dimension of the inputs to `Dense` should be defined. Found `None`.
我使用的是tensorflow版本2.1.0和keras版本2.3.1
知道发生这种情况的原因以及如何解决此问题吗?您可能需要根据输入形状的状态指定输入形状 input_shape:可选形状元组,仅在include_top为False时指定(否则输入形状必须为(224, 224,3)
在您的例子中,
vgg_model=VGG16(weights='imagenet',include_top=False,input_shape=((3206403)))
可能有帮助?建议不要将keras
和tensorflow.keras
导入混合使用。所有keras导入应该是来自tensorflow.keras.layers import Dense的。也许可以试试吗?我做了一个更改,不将模型保存为.h5”文件,只需指定一个目录路径,就可以让tensorflow以自己喜欢的方式保存它。而且当我这样做时,工作正常。新的保存命令将是model.save(model\u folder+'/model')