python - ValueError:检查输入时出错:预期 conv2d_1_input 的形状为 (128, 75, 1) 但得到的数组的形状为 (1, 128, 1)
问题描述
我正在将 melspectogram 加载到 cnn。这些是模型的代码和数据的形状。但我仍然收到这些错误
from keras import layers
from keras import models
model = models.Sequential()
model.add(layers.Conv2D(32, (3, 3), activation='relu',
input_shape=(128, 75, 1)))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(128, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(128, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Flatten())
model.add(layers.Dense(512, activation='relu'))
model.add(layers.Dense(10, activation='sigmoid'))
model.summary()
数据的形状
print(train_set_m.shape)
print(train_classes_m_hot.shape)
print(test_set_m.shape)
print(test_classes_m_hot.shape)
(75, 1, 128, 1) (75, 1, 10, 1) (25, 1, 128, 1) (25, 1, 10, 1)
These is the code I am fiting my model
# Deep Learning Parameters
batch_size = 5 # Number of samples per gradient update.
epochs = 200 # An epoch is an iteration over the entire x and y data provided.
# Train Model
hist = model.fit(train_set_m, train_classes_m_hot, verbose=1,
batch_size=batch_size, epochs=epochs, validation_data=(test_set_m,test_classes_m_hot))
我有 10 个要预测的课程
这些是错误
ValueError: Error when checking input: expected conv2d_1_input to have shape (128, 75, 1) but got array with shape (1, 128, 1)
解决方案
使用 model.add(layers.Conv2D(32, (3, 3), activation='relu', input_shape=(1, 128, 1)))
无论如何,您的数据似乎是一维的:您只有一个重要维度,大小为 128,其他都是虚拟的(大小 1)。所以一个更好的主意是用真正的一维重新格式化你的数据,然后使用一维卷积。
推荐阅读
- python - 打印捕获的异常类型而不打印错误描述
- python - Spark:在 from_json 之后删除空值或仅从 json 获取值
- javascript - Vue提交输入隐藏
- tensorflow - 在树莓派上安装 tensorflow 1.9* 通过修改代码以使用 tf 2 解决
- c++ - 为什么我不能使用 std::tie 从基于范围的对向量中解压缩值 for 循环
- c# - ActionFilterAttribute 中的 GetService 返回 null
- sql - 将两个 LEFT JOINS 连接在一起
- jdbc - 我们如何重置与 Kafka Connect 源连接器关联的状态?
- ios - 以编程方式在 UIScrollView 中安装 UIStackView
- javascript - 如何解决错误:“jsx”当前未启用