我想做个有线电视新闻网模型的二进制分类的一个非图像数据集。 我的模型/代码的工作和产生效果非常好(精度很高),但我无法理解的 input_shape
参数用于第1层的 Conv1D
.
形状的X或输入(这里 x_train_df
)是(2000年,28)中。 它有28个功能和2000年的样本。 和形状Y或标签(这里 y_train_df
)是(2000,1).
model = Sequential()
model.add(Conv1D(filters = 64, kernel_size = 3, activation = 'relu', input_shape = (x_train_df.shape[1], 1)))
model.add(Conv1D(filters = 64, kernel_size = 3, activation = 'relu'))
model.add(MaxPooling1D(pool_size = 2))
model.add(Flatten())
model.add(Dense(100, activation = 'relu'))
model.add(Dense(1, activation = 'sigmoid'))
optimzr = Adam(learning_rate=0.005)
model.compile(loss='binary_crossentropy', optimizer=optimzr, metrics=[[tf.keras.metrics.AUC(curve="ROC", name = 'auc')], [tf.keras.metrics.AUC(curve="PR", name = 'pr')]])
# running the fitting
model.fit(x_train_df, y_train_df, epochs = 2, batch_size = 32, validation_data = (x_val_df, y_val_df), verbose = 2)
我已经给了 input_shape
作为(28,1)(采取参考 这个问题).
但在 Conv1D层的文件 是书面的,
在使用这一层的第一层在一个模型,提供了一个 input_shape参数(tuple整数,或者没有,例如(10,128)为 序列的 10矢量的128维矢量.
我理解这是维input_shape应(2000年1),因为我有2000年的一个维矢量。 但是给予此作 input_shape
显示了一个错误,
Valueerror异常:0输入的层"sequential_25"不符合 层:预期状=(没有,2000年,1),发现状=(没有,28)
所以我的问题是什么应该是正确的 input_shape
?
ValueError: logits and labels must have the same shape, received ((None, 1) vs (None, 2000)).
所以我改变了的形状(2000年,28,1)x_train_df
和(2000,1,1)y_train_df
如图所示 ,在这个 和这一工作。 我混淆了这一点。 这将是非常有益的,如果你能解释如何修改代码在这个问题。