我想使用 Haskell 编写的 Grenade 深度学习库为自动编码器创建一个网络。
它应该学会用 200 位的层来表示 265 位的输入。
因此,我声明了类型:
type Auto =
Network
'[ FullyConnected 265 200, Relu, FullyConnected 200 265, Relu]
'[ 'D1 265, 'D1 200, 'D1 265]
但是,当我尝试为这种类型生成随机网络时
randomAuto :: MonadRandom m => m Auto
randomAuto = randomNetwork
我收到这样的类型错误:
Could not deduce (Layer Relu ('D1 200) ('D1 265)) arising from a use of ‘randomNetwork’
这肯定是因为维度 1 的唯一
Relu
实例被声明为KnownNat i => Layer Relu (D1 i) (D1 i)
要求输入和输出的大小相同。
但是你如何用这个库创建一个自动编码器呢?
最佳答案
看起来激活函数在这个库中算作“层”(不改变维度)。所以复制对应于 relu 层的维度:
type Auto =
Network
'[ FullyConnected 265 200, Relu, FullyConnected 200 265, Relu]
'[ 'D1 265, 'D1 200, 'D1 200, 'D1 265, 'D1 265]
关于haskell - 使用 Haskell Grenade 为自动编码器建模,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46104942/