python - Keras - “ValueError:检查目标时出错:预期activation_1具有形状(无,9)但得到形状为(9,1)的数组
问题描述
我正在构建一个模型以将文本分类为 9 层之一,并且在运行它时出现此错误。激活 1 似乎是指卷积层的输入,但我不确定输入有什么问题。
num_classes=9
Y_train = keras.utils.to_categorical(Y_train, num_classes)
#Reshape data to add new dimension
X_train = X_train.reshape((100, 150, 1))
Y_train = Y_train.reshape((100, 9, 1))
model = Sequential()
model.add(Conv1d(1, kernel_size=3, activation='relu', input_shape=(None, 1)))
model.add(Dense(num_classes))
model.add(Activation('softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
model.fit(x=X_train,y=Y_train, epochs=200, batch_size=20)
运行此程序会导致以下错误:
“ValueError:检查目标时出错:预期activation_1具有形状(无,9)但得到的数组形状为(9,1)
解决方案
您的代码中有几个拼写错误和错误。
Y_train = Y_train.reshape((100,9))
由于您重塑
X_train
为 (100,150,1),我猜您的输入步长为 150,通道为 1。因此,对于Conv1D
, (您的代码中有错字)input_shape=(150,1)
,。在输入密集层之前,您需要展平 conv1d 的输出。
import keras
from keras import Sequential
from keras.layers import Conv1D, Dense, Flatten
X_train = np.random.normal(size=(100,150))
Y_train = np.random.randint(0,9,size=100)
num_classes=9
Y_train = keras.utils.to_categorical(Y_train, num_classes)
#Reshape data to add new dimension
X_train = X_train.reshape((100, 150, 1))
Y_train = Y_train.reshape((100, 9))
model = Sequential()
model.add(Conv1D(2, kernel_size=3, activation='relu', input_shape=(150,1)))
model.add(Flatten())
model.add(Dense(num_classes, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
model.fit(x=X_train,y=Y_train, epochs=200, batch_size=20)
推荐阅读
- c - ipv6 套接字连接被拒绝和 errno 111 在 debian10 上使用 c 语言
- javascript - 手机不更新地理位置
- java - 我可以检查单元测试,某些方法被调用了 2 次吗?如何?
- go - 导入 Vault 1.3.0 时出错 go mod 错误
- python - Tableau /Python tabpy 预测模型错误
- firebase - 颤振不良状态:DocumentSnapshotPlatform中不存在字段
- python - 我应该测试集成测试中的每一个方法吗?
- c# - 单纯形噪声梯度
- react-native - 如何在 React Native 中自定义标题导航?
- pandas - 如何在 plotly imshow 热图的 hovertemplate 中使用来自第二个 df 的信息?