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
,如下图所示

Net1Net2部分仅由标准的
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  
有人能解释一下发生了什么事吗