了解Conv1D密集层(一维输入)的keras input_shape

时间:2020-08-13 13:24:25

标签: python tensorflow keras reshape autoencoder

伙计!

我尝试在keras中实现我自己的第一个dl-net,这将是一个自动编码器(希望能够进行降噪和堆叠)。但是我在输入层的输入形状格式上遇到了麻烦,它可以是Conv1DDense层(目前是Dense层,因为我希望可以解决此问题)-我还尝试了pytorch,但这也不能解决我的问题。

潜在的问题是,我感觉不到输入的形状参数及其结构。对于图像,您可以在整个互联网上找到很好的逻辑解释。但是,由于我使用的是一维数据,因此无法在此处应用这些技术-Dense / Conv1D API也无法正确回答我的问题。

我有 7000个样本,每个样本都由一个 500个整数的一维数组表示,那就是没有其他要素尺寸或属性-仅个通道如果我理解正确。因此input_shape=(,500)应该可以正常工作,因为我不必声明批量大小。 但这不起作用,我得到的消息是我的传入数据和形状不匹配。

也许有人可以清除?也许我的输入数据是形错误的-numpy输入应该是什么样?还是我的图层配置不正确

提前谢谢!我真的很想解决这个问题,并且已经尝试了几种重塑或输入形状定义的方法-不幸的是没有任何效果。

1 个答案:

答案 0 :(得分:1)

您只是忘记了“渠道”维度。就像图像一样,序列也可以具有通道。

例如,您可以运行以下代码:

import tensorflow as tf

layer = tf.keras.layers.Conv1D(input_shape=(500,), kernel_size=3, filters=2)
sample = tf.ones((1, 500, 1), dtype=tf.float32)  # (bs, input_shape, channels)

out = layer(sample)  #  out.shape will be (1, 498, 2)