Input_shape的Conv1D层Keras

0

的问题

我想做个有线电视新闻网模型的二进制分类的一个非图像数据集。 我的模型/代码的工作和产生效果非常好(精度很高),但我无法理解的 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?

1

最好的答案

0

让我们来看看如何"Conv1D"发生输入。

>>> # The inputs are 128-length vectors with 10 timesteps, and the batch size
>>> # is 4.
>>> input_shape = (4, 10, 128)
>>> x = tf.random.normal(input_shape)
>>> y = tf.keras.layers.Conv1D(
... 32, 3, activation='relu',input_shape=input_shape[1:])(x)
>>> print(y.shape)
    (4, 8, 32)

3+D张与形状:batch_shape+(步骤,input_dim)

由上可见,有128个特点,10个步长和大批的4. 因此,Conv1D需的输入(batch_size,步长、特征). 它需要3D输入。 让我们说你选择的批大小为1你的情况。 你得输入等(1,2000,28).

2021-11-22 08:00:37

使输入作为(1,2000,28)由一个错误 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 如图所示 ,在这个 和这一工作。 我混淆了这一点。 这将是非常有益的,如果你能解释如何修改代码在这个问题。
Badal

其他语言

此页面有其他语言版本

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................