【问题标题】:what is the difference between Conventional 1D or 2D in keras layerskeras 层中传统的 1D 或 2D 有什么区别
【发布时间】:2017-12-23 11:37:52
【问题描述】:

我正在发现keras 库,但我不知道keras layers 中的维度是什么意思以及如何选择它们? (model.add(Convolution2D(...))model.add(Convolution1D(...)) )

例如,我有一组 9000 个火车轨迹和 1000 个测试轨迹,每个轨迹有 1000 个样本,所以我创建了大小为 9000*1000 的数组 X_train,X_test 的大小为 1000*1000,Y_train 有大小为 9000,Y_test 的大小为 1000。

我的问题是如何选择第一层维度?

我尝试使用在 MNIST 中实现的相同示例:

model.add(Convolution2D(9000, (1, 1), activation='relu', input_shape(1,9000000,1),dim_ordering='th'))

但它不起作用,我什至不知道我应该在卷积函数的每个参数中放什么。

【问题讨论】:

  • 它以什么方式“不起作用”?有什么错误吗?
  • 执行model.add(Flatten())时出错,提示:Input 0 is incompatible with layer flatten_7: expected min_ndim=3, found ndim=2
  • @HajjiSofien 我会摆脱 Flatten() 层。这应该使您的模型保持在三个维度,因为 Flatten() 会将其展平为二维。 (它可能会在与您的输入/输出形状相关的错误之后产生不同的错误,但应该解决当前的错误。)

标签: python neural-network deep-learning keras


【解决方案1】:

维度(1D、2D 等)的选择取决于您输入的维度。例如,由于您使用的是 MNIST 数据集,因此您将使用 2D 图层,因为您的输入是具有高度和宽度(二维)的图像。或者,如果您使用的是文本数据,您可能会使用一维图层,因为句子是单词的线性列表(一维)。

我建议查看 Francois Chollet 的 MNIST 卷积神经网络示例:https://github.com/fchollet/keras/blob/master/examples/mnist_cnn.py。 (注:Conv2D 与 Convolution2D 相同。)

【讨论】:

  • 好的,我明白了,但是你能告诉我在使用 MNIST 数据集时 Convolution2D 函数中每个参数的含义是什么吗? model.add(Convolution2D(32, 3, 3, activation='relu', input_shape=(1,28,28))) 32和(1,1)代表什么?
  • @HajjiSofien 查看Keras docs for Conv2D。除非您明确指定参数(如 activation=.... 或 input_shape=....),否则参数是按顺序排列的。因此,第一个参数是过滤器的数量,而第二个是内核大小等。
猜你喜欢
  • 2020-11-10
  • 1970-01-01
  • 2019-08-09
  • 1970-01-01
  • 1970-01-01
  • 2010-09-12
  • 1970-01-01
  • 2021-05-27
  • 2020-03-16
相关资源
最近更新 更多