Luc*_*ucG 3 neural-network deep-learning keras pytorch
我正在尝试在 keras 中模拟 pytorch 神经网络。
我确信我的 keras 版本的神经网络与 pytorch 中的非常接近,但在训练期间,我看到 pytorch 网络的损失值远低于 keras 网络的损失值。我想知道这是不是因为我没有正确复制keras中的pytorch网络或者两个框架中的损失计算不同。
Pytorch 损失定义:
loss_function = nn.CrossEntropyLoss()
optimizer = optim.SGD(net.parameters(), lr=args.lr, momentum=0.9, weight_decay=5e-4)
Run Code Online (Sandbox Code Playgroud)
Keras 损失定义:
sgd = optimizers.SGD(lr=.1, momentum=0.9, nesterov=True)
resnet.compile(loss='categorical_crossentropy', optimizer=sgd, metrics=['categorical_accuracy'])
Run Code Online (Sandbox Code Playgroud)
请注意,根据源代码,keras 网络中的所有层都已使用 L2 正则化实现kernel_regularizer=regularizers.l2(5e-4)
,我还使用了he_uniform
我认为在 pytorch 中默认的初始化。
两个网络的批量大小相同:128
.
在 pytorch 版本中,我得到了大约4.1209
减少到大约 的损失值0.5
。在 keras 中,它从 30 左右开始并减少到2.5
.