代码之家  ›  专栏  ›  技术社区  ›  user2840286

R Keras展平层-得到一个形状为1的数组

  •  1
  • user2840286  · 技术社区  · 6 年前

    我试着用张量流在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 (129, 1200, 3) 第二个是一维向量 (129,) .

    但是,我得到了一个错误:

    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 回复  |  直到 6 年前
        1
  •  1
  •   today    6 年前

    目标形状不兼容:您提供一个大小为1的向量作为目标(即。 (129,) 表示129个样本标签(大小为1),但是模型的输出形状是 (None, 3600) 所以它需要3600大小的向量,这就是为什么当你用一个单位添加一个稠密层时,问题就解决了:稠密层的输出形状是 (None, 1) 你提供 (129,) 而且它们彼此匹配,因此没有什么可抱怨的。

    推荐文章