CNN中数据集的输入形状

数据挖掘 深度学习 Python 喀拉斯
2022-03-03 06:29:08

我的数据集是一个 20 列 100,000 行的简单表格。它不是 CNN 中常用的图像数据。在这种情况下我应该提供什么输入形状?

现在我做到了——

input_shape = (21,109713,1)

model.add(Conv2D(32, kernel_size=(5, 5), strides=(1, 1),
                 activation='relu',
                 input_shape=input_shape))

这给出了错误-

ValueError: rng_mrg cpu-implementation does not support more than (2**31 -1) samples
2个回答

我在其他帖子中也提到了这一点:

可以使用形状为通常的特征表Conv1d数据要输入特征,需要以下 2 个步骤:Keras(nrows, ncols)

xtrain.reshape(nrows, ncols, 1)
# For conv1d statement: 
input_shape = (ncols, 1) 

例如,取 iris 数据集的前 4 个特征:

要查看通常的格式及其形状:

iris_array = np.array(irisdf.iloc[:,:4].values)
print(iris_array[:5])
print(iris_array.shape)

输出显示通常的格式及其形状:

[[5.1 3.5 1.4 0.2]
 [4.9 3.  1.4 0.2]
 [4.7 3.2 1.3 0.2]
 [4.6 3.1 1.5 0.2]
 [5.  3.6 1.4 0.2]]

(150, 4)

以下代码更改格式:

nrows, ncols = iris_array.shape
iris_array = iris_array.reshape(nrows, ncols, 1)
print(iris_array[:5])
print(iris_array.shape)

上述代码数据格式及其形状的输出:

[[[5.1]
  [3.5]
  [1.4]
  [0.2]]

 [[4.9]
  [3. ]
  [1.4]
  [0.2]]

 [[4.7]
  [3.2]
  [1.3]
  [0.2]]

 [[4.6]
  [3.1]
  [1.5]
  [0.2]]

 [[5. ]
  [3.6]
  [1.4]
  [0.2]]]

(150, 4, 1)

这适用于 Keras 的 Conv1d。对于 input_shape (4,1) 是需要的。

你可以在 keras 中使用 Conv1D。使用 Keras Conv1D,您将不需要 3D 形状。

keras.layers.Conv1D(filters, kernel_size, strides=1, 
  padding='valid', data_format='channels_last', 
  dilation_rate=1, activation=None, use_bias=True, 
  kernel_initializer='glorot_uniform', 
  bias_initializer='zeros', kernel_regularizer=None, 
  bias_regularizer=None, activity_regularizer=None,  
  kernel_constraint=None, bias_constraint=None)