我如何让Keras CNN使用正确数量的维度?

2024-09-29 21:39:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我得到错误:
“检查输入时出错:预期conv1d\u 41\u输入有3个维度,但得到了形状为(1920,5000)的数组”
当试图在Keras中编译CNN模型时

我的输入数据是1920个样本,包含5000个特征

我尝试在第一个密集层之前添加一个扁平层

# Parameters 
BATCH_SIZE = 16
DROP_OUT = 0.25
N_EPOCHS = 100
N_FILTERS = 128
TRAINABLE = False
LEARNING_RATE = 0.001
N_DIM = 32
KERNEL_SIZE = 7

# Create model
model = Sequential()
model.add(Conv1D(N_FILTERS, KERNEL_SIZE, activation='relu', padding='same',input_shape=(5000,1)))
model.add(MaxPooling1D(2))
model.add(Conv1D(N_FILTERS, KERNEL_SIZE, activation='relu', padding='same'))
model.add(GlobalMaxPooling1D())
model.add(Dropout(DROP_OUT))
model.add(Dense(N_DIM, activation='relu', kernel_regularizer=regularizers.l2(1e-4)))
model.add(Dense(N_LABELS, activation='sigmoid'))  
adam = optimizers.Adam(lr=LEARNING_RATE, beta_1=0.9, beta_2=0.999, epsilon=1e-08, decay=0.0)
model.compile(loss='binary_crossentropy', optimizer=adam, metrics=['accuracy'])
model.summary()

Tags: addsizemodelrateoutactivationkernelfilters
1条回答
网友
1楼 · 发布于 2024-09-29 21:39:30

如果将输入形状声明为input_shape=(5000,1),则数据应具有形状(None, 5000,1),其中第一个维度对应于样本,因此在这种情况下,您只需通过重塑来添加值为1的通道维度:

X_train = X_train.reshape((-1, 5000, 1))

并对任何测试或验证数据执行相同的操作

相关问题 更多 >

    热门问题