使用4通道DNA数据输入Keras的格式错误

时间:2017-07-07 22:57:58

标签: python tensorflow neural-network keras reshape

我有DNA数据,我试图输入Keras,我有一个热编码它,每个DNA序列是4个通道(每种类型的核苷酸一个)。我按照了一些教程,但我似乎遇到了格式化问题。也许有人可以帮助我?这是我第一次尝试将自己的数据输入Keras。我的数据如下:

print(x_train.shape) (1509, 4, 476) print(y_train.shape) (1509,)

我的模型(到目前为止)看起来像这样:

###Setup Keras to create a convolutional recurrent NN
# set parameters:
batch_size = 32
filters = (32, 1, 2) #(number of filters, rows per convolution kernel, columns per convolution kernel)
kernel_size = 16
x_shape = (1509, 1, 476, 4) #(samples, height, width, depth)
epochs = 3

#declare model
model = Sequential()

#CNN Input layer
model.add(Conv2D(filters,
                 kernel_size,
                 padding='same',
                 activation='relu',
                 strides=(1,0),
                 input_shape=x_shape))
print(model.output_shape)

但是我收到以下错误:

ValueError: Input 0 is incompatible with layer conv2d_0: expected ndim=4, found ndim=5

当我指定4个维度时,我不清楚模型为什么找到input_shape参数的5个维度。我错过了什么?

1 个答案:

答案 0 :(得分:2)

您不应在input_shape参数中包含样本数。这就是错误的含义。 批量大小维度是自动添加的。

此外,您应该重塑x_train表以匹配input_shape:

@each $label, $map in $header {
  #{$label} {
    color: map-get($map, color);
    font-size: map-get($map, font-size);
  }
}

这样我首先将数组转换成(1509,476,4)然后添加了一个维度:(1509,1,476,4)

我希望这会有所帮助