如何解决即使定义了输入层,在运行model.summary时尚未构建模型
我对ml来说还比较陌生,并且正在为视频分类建立CNN + LSTM模型,但是在尝试运行model.summary()时遇到了错误。
关于模型本身的背景知识:我正在使用ImageDataGenerator传递(48、48、1)灰度图像,批处理大小为15。它是二进制分类(a或b)。
我在遇到model.summary()错误时,尝试修复此错误时遇到了更多错误。
这是我的模型的代码:
fixed_point<8,8>
我收到的错误是:
此模型尚未构建。首先通过调用
from tensorflow.keras import Sequential from tensorflow.keras.layers import * cnn = Sequential() num_timesteps = 2 # 1st conv layer cnn.add(Conv2D(64,(3,3),padding='same')) cnn.add(BatchNormalization()) cnn.add(Activation('relu')) cnn.add(MaxPooling2D(pool_size=(2,2))) cnn.add(Dropout(0.5)) # 2nd conv layer cnn.add(Conv2D(128,(5,5),2))) cnn.add(Dropout(0.5)) # 3rd conv layer cnn.add(Conv2D(512,2))) cnn.add(Dropout(0.5)) # 4th conv layer cnn.add(Conv2D(512,2))) cnn.add(Dropout(0.5)) # flatten cnn.add(Flatten()) # fully connected 1 cnn.add(Dense(256)) cnn.add(BatchNormalization()) cnn.add(Activation('relu')) cnn.add(Dropout(0.5)) #fully connected 2 cnn.add(Dense(512)) cnn.add(BatchNormalization()) cnn.add(Activation('relu')) cnn.add(Dropout(0.5)) model = Sequential() model.add(Reshape((1,48,1))) model.add(TimeDistributed(cnn,input_shape=(num_timesteps,1))) model.add(LSTM(num_timesteps,return_sequences=True)) model.add(Dropout(0.5)) model.add(Dense(1,activation='softmax')) #model.build(input_shape) model.summary() model.compile(loss='binary_crossentropy',optimizer='adam',metrics=['acc'])
或使用某些数据调用build()
来构建模型,或者在第一层中指定一个fit()
参数以进行自动构建。
我已经指定了模型的输入,所以我对为什么收到此错误感到困惑。
我尝试通过执行以下操作来修复此错误:
我已经添加了model.build(),但是稍后在尝试运行model.predict()时,只会出现随后的错误。它指出“警告:tensorflow:没有传递到第一层的input_shape
的顺序模型无法重新加载其优化器状态。结果,您的模型将从新初始化的优化器开始” 出现以下错误:
TypeError:传递给参数'input'的值的数据类型uint8不在允许的值列表中:float16,bfloat16,float32,float64,int32
我还尝试过移除可修复model.summary()错误的重塑层,但是在运行model.fit()时会给出不同的错误:
检查输入时出错:预期time_distributed_108_input具有5个维度,但数组的形状为(15,48,48,1)
我也很困惑为什么在这里出现错误,就像在查看模型输出中的输出形状时一样。总结,显然有5个维度(无,2、48、48、64)。据我了解,“ None”将替换为15的批量大小。
所以我对所有这些错误的理解是,通过使用model.summary()中的input_shape修复第一个错误或通过model.fit()中的错误修复,其余错误将得到修复
感谢您抽出宝贵的时间阅读本文档,对于解决这些错误的任何帮助将不胜感激!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。