Machine learning 火炬7:没有batchNorm或辍学,但是model:training()和model:evaluate()产生不同的结果
我已经训练了一个小网络,它基本上是一个带有两个分支的Machine learning 火炬7:没有batchNorm或辍学,但是model:training()和model:evaluate()产生不同的结果,machine-learning,torch,Machine Learning,Torch,我已经训练了一个小网络,它基本上是一个带有两个分支的火炬.ParallelTable,如下图所示 Net1和Net2部分仅由标准的nn.SpatialConvolution、nn.SPATIALFULL卷积、nn.SPATIALEXPOOLING和nn.PRelu组成。所以没什么不寻常的。SPP 零件是包中的inn.SpatialPyramidalTooling层。 我没有使用任何批处理规范化或droptout。我用一个nn.mse标准训练网络作为损失,错误的顺序是10^{-11},因此它似乎
火炬.ParallelTable
,如下图所示
Net1和Net2部分仅由标准的nn.SpatialConvolution
、nn.SPATIALFULL卷积
、nn.SPATIALEXPOOLING
和nn.PRelu
组成。所以没什么不寻常的。SPP
零件是包中的inn.SpatialPyramidalTooling
层。
我没有使用任何批处理规范化或droptout。我用一个nn.mse标准
训练网络作为损失,错误的顺序是10^{-11}
,因此它似乎超出了范围。但是,在evaluate()
模式下转发时,我得到一个大约0.5
的错误
model:training()
res=model:forward(some_data)
loss=my_loss:forward(res,some_ground_truth) -- about 10^{-11}
但如果我改为评估模式,我会
model:evaluate()
res=model:forward(some_data)
loss=my_loss:forward(res,some_ground_truth) -- about 0.5
有人能解释一下发生了什么事吗