如何理解 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)
值a
和d
是从上一层复制过来的。值 2 是强制的,值 -1
计算保持与输入相同数量的元素所需的任何值。
在 Keras 中,由于您没有更改第一个维度(批量大小),因此您只需要一个忽略批量大小的常规 Reshape 层:
Reshape((2,-1,youMustKnowThis))
在Sequential
模型中,只需添加这一层:
sequentialModel.add(Reshape((2,-1,youMustKnowThis))
在函数式APIModel
中,传递上一层的输出:
newShaped = Reshape((2,-1,youMustKnowThis))(outputOfPreviousLayer)
我不确定如何解释重塑参数。这里 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)
值a
和d
是从上一层复制过来的。值 2 是强制的,值 -1
计算保持与输入相同数量的元素所需的任何值。
在 Keras 中,由于您没有更改第一个维度(批量大小),因此您只需要一个忽略批量大小的常规 Reshape 层:
Reshape((2,-1,youMustKnowThis))
在Sequential
模型中,只需添加这一层:
sequentialModel.add(Reshape((2,-1,youMustKnowThis))
在函数式APIModel
中,传递上一层的输出:
newShaped = Reshape((2,-1,youMustKnowThis))(outputOfPreviousLayer)