如何理解 Keras 中的 Caffe 重塑参数和重新实现?

How to understand Caffe reshape parameters and reimplement in Keras?

我不确定如何解释重塑参数。这里 http://caffe.berkeleyvision.org/tutorial/layers/reshape.html 表示 0 表示复制,-1 表示推断。当-1 不是最后一个参数时是否相同?谁能帮我理解一下?

 layer {
  name: "Layer1"
  type: "Reshape"
  bottom: "Layer1"
  top: "Layer2"
  reshape_param {
  shape {
      dim: 0
      dim: 2
      dim: -1
      dim: 0
}
}

此外,如果我想在 Keras 中实现相同的层,我是否也使用 Keras 重塑层,如:

Layer2 = K.reshape(Layer1,(-1,input_dim)) 

这意味着考虑到您的输入形状为 (a, b, c, d, e),您的输出形状为:

(a, 2, b * c * e / 2, d)

ad是从上一层复制过来的。值 2 是强制的,值 -1 计算保持与输入相同数量的元素所需的任何值。

在 Keras 中,由于您没有更改第一个维度(批量大小),因此您只需要一个忽略批量大小的常规 Reshape 层:

Reshape((2,-1,youMustKnowThis)) 

Sequential模型中,只需添加这一层:

sequentialModel.add(Reshape((2,-1,youMustKnowThis))

在函数式APIModel中,传递上一层的输出:

newShaped = Reshape((2,-1,youMustKnowThis))(outputOfPreviousLayer)