R Keras展平层-形状为1的数组

时间:2018-10-05 18:13:44

标签: r tensorflow machine-learning keras deep-learning

我正在尝试使用TensorFlow在R Keras中构建仅具有平坦层的模型。这是代码段:

model <- keras_model_sequential() %>%
  layer_flatten(input_shape = c(lookback, dim(train.data)[-1]))

model %>% compile(
  optimizer = optimizer_rmsprop(),
  loss = "mae"
)

history <- model %>% fit_generator(
  train_gen,
  steps_per_epoch = 500,
  epochs = 20
)

lookback是1200,而dim(train.data)(13155, 3)。平整层的输入是(1200, 3),我希望它应该输出3600的一维矢量。

train_gen返回2的列表。第一个是尺寸为(129, 1200, 3)的3D矩阵,第二个是尺寸为(129,)的1D向量。

但是,我得到了错误:

Error in py_call_impl(callable, dots$args, dots$keywords) : 
  ValueError: Error when checking target: expected dense_15 to have shape (3600,) but got array with shape (1,)

我不知道为什么会这样。如果我添加layer_dense(units = 1)可以,但是我不明白为什么。

1 个答案:

答案 0 :(得分:1)

目标形状不兼容:您为目标提供大小为1的向量(即$M2_HOME/conf/settings.xml表示129个大小为1的样本标签),但是模型的输出形状为(129,),因此需要向量的大小为3600。这就是为什么当您使用一个单元添加一个密集层时,该问题得以解决的原因:密集层的输出形状为(None, 3600),并且您提供了(None, 1)并且它们相互匹配,因此没有问题抱怨。