摘要:我们在训练时如果使用了BN层和Dropout层,我们需要对model进行标识: model.train():在训练时使用BN层和Dropout层,对模型进行更改。 model.eval():在评价时将BN层和Dropout层冻结,这两个操作不会对模型进行更改。 阅读全文
posted @ 2020-02-27 21:24 谦谦谦谦谦谦谦谦 阅读 (60) 评论 (0) 编辑
摘要:在写代码时发现我们在定义Model时,有两种定义方法: torch.nn.Conv2d()和torch.nn.functional.conv2d() 那么这两种方法到底有什么区别呢,我们通过下述代码看出差别,先拿torch.nn.Conv2d torch.nn.Conv2d class Conv2d 阅读全文
posted @ 2020-02-27 21:15 谦谦谦谦谦谦谦谦 阅读 (46) 评论 (0) 编辑
摘要:计算图和autograd是十分强大的工具,可以定义复杂的操作并自动求导;然而对于大规模的网络,autograd太过于底层。 在构建神经网络时,我们经常考虑将计算安排成层,其中一些具有可学习的参数,它们将在学习过程中进行优化。 TensorFlow里,有类似Keras,TensorFlow-Slim和 阅读全文
posted @ 2020-02-19 16:42 谦谦谦谦谦谦谦谦 阅读 (36) 评论 (0) 编辑
摘要:import torchclass MyreLu(torch.autograd.Function): """ 我们可以通过定义torch.autograd的子类来实现我们自定义的autograd函数, 并完成张量的正向反向传播 """ @staticmethod def forward(ctx, x 阅读全文
posted @ 2020-02-19 14:59 谦谦谦谦谦谦谦谦 阅读 (30) 评论 (0) 编辑