python - 多类模型中的最后一个 Dense 层如何期望形状为 (1,)?
问题描述
我有 15 个班级的多班级问题。模型如下:
def create_model(latent_dimension=1000, num_classes=15):
input_x = Input(shape=(latent_dimension, 1), dtype='float32')
conv_1 = Conv1D(16, kernel_size=(64), activation='relu')(input_x)
maxpool_1 = MaxPool1D(pool_size=(4))(conv_1)
bn_1 = BatchNormalization()(maxpool_1)
conv_2 = Conv1D(32, kernel_size=(32), activation='relu')(bn_1)
maxpool_2 = MaxPool1D(pool_size=(4))(conv_2)
bn_2 = BatchNormalization()(maxpool_2)
conv_3 = Conv1D(64, kernel_size=(16), activation='relu')(bn_2)
bn_3 = BatchNormalization()(conv_3)
conv_4 = Conv1D(128, kernel_size=(4), activation='relu')(bn_3)
flatten = Flatten()(conv_4)
dense1 = Dense(units=128, activation='relu')(flatten)
out = Dense(units=64, activation='relu')(dense1)
model = Model(input_x, out)
inputA = Input(shape=(latent_dimension, 1), dtype='float32')
inputB = Input(shape=(latent_dimension, 1), dtype='float32')
inputC = Input(shape=(latent_dimension, 1), dtype='float32')
inputD = Input(shape=(latent_dimension, 1), dtype='float32')
inputE = Input(shape=(latent_dimension, 1), dtype='float32')
cnn_out1 = model(inputA)
cnn_out2 = model(inputB)
cnn_out3 = model(inputC)
cnn_out4 = model(inputD)
cnn_out5 = model(inputE)
combined = concatenate([cnn_out1, cnn_out2, cnn_out3, cnn_out4, cnn_out5], axis=-1)
fully_connected = Dense(128, activation="relu")(combined)
outputs_fc = Dense(15, activation="softmax")(fully_connected)
model_encoded = Model(inputs=[inputA, inputB, inputC, inputD, inputE], outputs=outputs_fc)
model_encoded.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
print(model_encoded.summary())
return model_encoded
在此模型的生成器中,我将数据生成为:
def data_gen():
# some operations
yield chx, to_categorical(chy, 15)
它们的形状是:
print(len(chx)) # 5
print(chx[0].shape) # (32, 1000, 1)
print(len(chy)) # 32
print(to_categorical(chy, 15).shape) # (32, 15)
32 是我的批量大小,5 用于 5 个输入层。(1000, 1) 只是一个信号数据。
当我尝试训练这个模型时,它给出了错误:ValueError: Error when checking target: expected dense_4 to have shape (1,) but got array with shape (15,)
我看不出问题出在哪里。为什么我不能训练这个模型?如果您需要,我可以提供更多信息。
解决方案
推荐阅读
- c - 使用 Emscripten 从 C 编译到 WebAssembly
- angular - Kendo Grid 在主行单击时展开/折叠详细信息
- meson-build - 无法使介子构建系统中的包装文件选项正常工作
- rust - 如何读取和修改链接树中节点的值?
- jboss - JBOSS:/status & /status?XML=true & /status?full=true 禁用
- python - 根据包含字符串的列(2个定义的条件)从另一个数据框创建数据框
- c++ - 为什么我退出循环后我的地图值被重置
- docker - Dockerizing Flask Web App 后定期“在查询期间丢失与 MySQL 服务器的连接”
- javascript - 带有 DOM 的 Javascript 对象构造函数
- python - 抓取网站时如何让python代码正确循环到下一页?