首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Keras模型ValueError:无法压缩dim[1],预期维度为1,得到90

Keras模型ValueError:无法压缩dim[1],预期维度为1,得到90
EN

Stack Overflow用户
提问于 2021-02-26 07:15:00
回答 1查看 119关注 0票数 0

我目前的模型是:

代码语言:javascript
复制
# from tensorflow.keras.layers import InputLayer
model_training = Sequential()
# input_layer = keras.Input(shape=(300,1))
model_training.add(InputLayer(input_shape=(300,1)))
model_training.add(Conv1D(filters=32, kernel_size=3, padding='same', activation='tanh'))
model_training.add(Dropout(0.2))
model_training.add(MaxPooling1D(pool_size=3))
model_training.add(Dropout(0.2))
model_training.add(Conv1D(filters=32, kernel_size=3, padding='same', activation='tanh'))
model_training.add(Dropout(0.2))
model_training.add(MaxPooling1D(pool_size=3))
# model_training.add(Dropout(0.2))
# model_training.add(Conv1D(filters=32, kernel_size=3, padding='same', activation='tanh'))
# model_training.add(Dropout(0.2))
# model_training.add(MaxPooling1D(pool_size=3))
# model_training.add(Dropout(0.2))
# model_training.add(Conv1D(filters=32, kernel_size=3, padding='same', activation='tanh'))
# model_training.add(Dropout(0.2))
# model_training.add(MaxPooling1D(pool_size=3))
# model_training.add(Dropout(0.2))
#model.add(Dropout(0.2))
model_training.add(Flatten())
model_training.add(Dense(90))
model_training.add(Activation('sigmoid'))
model_training.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
print(model_training.summary())

我的拟合函数:

代码语言:javascript
复制
model_training.fit(train_data, train_labels, validation_data=(test_data, test_labels), batch_size=32, epochs=15)

当我运行下面的代码时,我得到了这个错误:

代码语言:javascript
复制
ValueError: Can not squeeze dim[1], expected a dimension of 1, got 90 for '{{node Squeeze}} = Squeeze[T=DT_FLOAT, squeeze_dims=[-1]](remove_squeezable_dimensions/Squeeze)' with input shapes: [?,90].

有什么想法吗?我的输出层有90个,因为总共有90个类可以给出预测。

列车和标签的形状如下:

代码语言:javascript
复制
(7769, 300, 1)
(7769, 90, 1)

我搞不懂这个问题。如有任何帮助,我们不胜感激!部分模型摘要:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-26 07:22:37

在训练之前挤压标签:

代码语言:javascript
复制
train_labels = tf.squeeze(train_labels, axis=-1)

看起来标签的形状才是问题所在。模型将输出(batch, 90)形状,但您提供的是(batch, 90, 1)。Keras无法压缩维度% 1,因为它的长度为90而不是1。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66377901

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档