在结构中调用 Flux 函数时,我似乎得到了不同的行为(不同的输出维度),而不是直接将函数应用于张量:
直接申请:
m = Chain(MaxPool((2,2), stride=2),Conv((3,3), 32*8=>32*16, pad=1), BatchNorm(32*16, relu),Conv((3,3), 32*16=>32*16, pad=1), BatchNorm(32*16, relu))
println(size(m(ones((32, 32, 256, 1))))) #gives the expected (16, 16, 512, 1)
通过结构:
block(in_channels, features) = Chain(MaxPool((2,2), stride=2), Conv((3,3), in_channels=>features, pad=1), BatchNorm(features, relu), Conv((3,3), features=>features, pad=1), BatchNorm(features, relu))
struct test
b
end
function test()
b = (block(32*8, 32*16))
test(b)
end
function (t::test)(x)
x1 = t.b[1](x)
println(size(x1))
end
test1 = test()
test1(ones((32, 32, 256, 1))) #gives (16, 16, 256, 1)
为什么 2 个片段的输出通道尺寸不同?我对 Julia 中的结构缺少什么?谢谢!