【发布时间】:2018-06-22 06:39:11
【问题描述】:
如何在训练期间根据验证数据测试我的 pytorch 模型?
我知道有一个函数myNet.eval() 显然可以切换任何丢失层,但它是否也阻止了梯度的累积?
另外,我将如何撤消 myNet.eval() 命令以继续培训?
如果有人有一些代码 sn-p / toy 示例,我将不胜感激!
【问题讨论】:
标签: pytorch
如何在训练期间根据验证数据测试我的 pytorch 模型?
我知道有一个函数myNet.eval() 显然可以切换任何丢失层,但它是否也阻止了梯度的累积?
另外,我将如何撤消 myNet.eval() 命令以继续培训?
如果有人有一些代码 sn-p / toy 示例,我将不胜感激!
【问题讨论】:
标签: pytorch
如何在训练期间根据验证数据测试我的 pytorch 模型?
有很多例子,在训练期间的每个 epoch 都有训练和测试步骤。一个简单的方法是official MNIST example。由于 pytorch 不提供任何高级培训、验证或评分框架,您必须自己编写。通常这包括
torch.utils.dataloader.Dataloader)train() 函数,使用训练数据优化模型test() 或 valid() 函数,用于在给定验证数据和指标的情况下衡量模型的有效性这也是您将在链接示例中找到的内容。
或者,您可以使用提供基本循环和验证工具的框架,这样您就不必一直自己实现所有内容。
另外,我将如何撤消
myNet.eval()命令以继续培训?
myNet.train() 或者,提供一个布尔值以在评估和训练之间切换:myNet.train(True) 用于训练模式。
【讨论】:
我知道有一个函数 myNet.eval() 显然可以切换任何 dropout 层,但它是否也阻止了梯度的累积?
它不会阻止渐变的累积。
但我认为在测试期间,您确实想忽略渐变。在这种情况下,您应该将输入到网络的变量标记为volatile=True,这样可以节省一些用于前向计算的时间和空间。
另外,我将如何撤消 myNet.eval() 命令以继续训练?
myNet.train()
【讨论】: