在pytorch中查看可训练参数的例子

pytorch中我们有时候可能需要设定某些变量是参与训练的,这时候就需要查看哪些是可训练参数,以确定这些设置是成功的。

pytorch中model.parameters()函数定义如下:

  def parameters(self):
    r"""Returns an iterator over module parameters.

    This is typically passed to an optimizer.

    Yields:
      Parameter: module parameter

    Example::

      >>> for param in model.parameters():
      >>>   print(type(param.data), param.size())
      <class 'torch.FloatTensor'> (20L,)
      <class 'torch.FloatTensor'> (20L, 1L, 5L, 5L)

    """
    for name, param in self.named_parameters():
      yield param

所以,我们可以遍历named_parameters()中的所有的参数,只打印那些param.requires_grad=True的变量。具体实现代码如下所示:

for name, param in model.named_parameters():
  if param.requires_grad:
    print(name)

这样打印出的结果就是模型中所有的可训练参数列表!

以上这篇在pytorch中查看可训练参数的例子就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • pytorch 固定部分参数训练的方法

    需要自己过滤 optimizer.SGD(filter(lambda p: p.requires_grad, model.parameters()), lr=1e-3) 另外,如果是Variable,则可以初始化时指定 j = Variable(torch.randn(5,5), requires_grad=True) 但是如果是 m = nn.Linear(10,10) 是没有requires_grad传入的 m.requires_grad也没有 需要 for i in m.parameter

  • python PyTorch预训练示例

    前言 最近使用PyTorch感觉妙不可言,有种当初使用Keras的快感,而且速度还不慢.各种设计直接简洁,方便研究,比tensorflow的臃肿好多了.今天让我们来谈谈PyTorch的预训练,主要是自己写代码的经验以及论坛PyTorch Forums上的一些回答的总结整理. 直接加载预训练模型 如果我们使用的模型和原模型完全一样,那么我们可以直接加载别人训练好的模型: my_resnet = MyResNet(*args, **kwargs) my_resnet.load_state_dict(

  • pytorch 共享参数的示例

    在很多神经网络中,往往会出现多个层共享一个权重的情况,pytorch可以快速地处理权重共享问题. 例子1: class ConvNet(nn.Module): def __init__(self): super(ConvNet, self).__init__() self.conv_weight = nn.Parameter(torch.randn(3, 3, 5, 5)) def forward(self, x): x = nn.functional.conv2d(x, self.conv_w

  • pytorch 在网络中添加可训练参数,修改预训练权重文件的方法

    实践中,针对不同的任务需求,我们经常会在现成的网络结构上做一定的修改来实现特定的目的. 假如我们现在有一个简单的两层感知机网络: # -*- coding: utf-8 -*- import torch from torch.autograd import Variable import torch.optim as optim x = Variable(torch.FloatTensor([1, 2, 3])).cuda() y = Variable(torch.FloatTensor([4,

  • 在pytorch中查看可训练参数的例子

    pytorch中我们有时候可能需要设定某些变量是参与训练的,这时候就需要查看哪些是可训练参数,以确定这些设置是成功的. pytorch中model.parameters()函数定义如下: def parameters(self): r"""Returns an iterator over module parameters. This is typically passed to an optimizer. Yields: Parameter: module paramete

  • pytorch中dataloader 的sampler 参数详解

    目录 1. dataloader() 初始化函数 2. shuffle 与sample 之间的关系 3. sample 的定义方法 3.1 sampler 参数的使用 4. batch 生成过程 1. dataloader() 初始化函数 def __init__(self, dataset, batch_size=1, shuffle=False, sampler=None, batch_sampler=None, num_workers=0, collate_fn=None, pin_mem

  • PyTorch和Keras计算模型参数的例子

    Pytorch中,变量参数,用numel得到参数数目,累加 def get_parameter_number(net): total_num = sum(p.numel() for p in net.parameters()) trainable_num = sum(p.numel() for p in net.parameters() if p.requires_grad) return {'Total': total_num, 'Trainable': trainable_num} Kera

  • 在django view中给form传入参数的例子

    在django的form表单会出现,在form的验证或者保存时需要非form中的field的信息参数.例如在对操作进行记录,我们需要根据将记录的操作人设置为当前的用户,所以在view中我们需要将user的信息传入到form中,方便在form.save()d的方法使用. models # models.py from django.db import models from django.contrib.auth.models import User class Record(models.Mod

  • 在PyTorch中Tensor的查找和筛选例子

    本文源码基于版本1.0,交互界面基于0.4.1 import torch 按照指定轴上的坐标进行过滤 index_select() 沿着某tensor的一个轴dim筛选若干个坐标 >>> x = torch.randn(3, 4) # 目标矩阵 >>> x tensor([[ 0.1427, 0.0231, -0.5414, -1.0009], [-0.4664, 0.2647, -0.1228, -1.1068], [-1.1734, -0.6571, 0.7230,

  • BatchNorm2d原理、作用及pytorch中BatchNorm2d函数的参数使用

    目录 BN原理.作用 函数参数讲解 总结 BN原理.作用 函数参数讲解 BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True) 1.num_features:一般输入参数的shape为batch_size*num_features*height*width,即为其中特征的数量,即为输入BN层的通道数: 2.eps:分母中添加的一个值,目的是为了计算的稳定性,默认为:1e-5,避免分母为0:

  • Pytorch中关于BatchNorm2d的参数解释

    目录 BatchNorm2d中的track_running_stats参数 running_mean和running_var参数 BatchNorm2d参数讲解 总结 BatchNorm2d中的track_running_stats参数 如果BatchNorm2d的参数val,track_running_stats设置False,那么加载预训练后每次模型测试测试集的结果时都不一样: track_running_stats设置为True时,每次得到的结果都一样. running_mean和runn

  • 在Pytorch中使用Mask R-CNN进行实例分割操作

    在这篇文章中,我们将讨论mask R-CNN背后的一些理论,以及如何在PyTorch中使用预训练的mask R-CNN模型. 1.语义分割.目标检测和实例分割 之前已经介绍过: 1.语义分割:在语义分割中,我们分配一个类标签(例如.狗.猫.人.背景等)对图像中的每个像素. 2.目标检测:在目标检测中,我们将类标签分配给包含对象的包围框. 一个非常自然的想法是把两者结合起来.我们只想在一个对象周围识别一个包围框,并且找到包围框中的哪些像素属于对象. 换句话说,我们想要一个掩码,它指示(使用颜色或灰

  • pytorch 实现查看网络中的参数

    可以通过model.state_dict()或者model.named_parameters()函数查看现在的全部可训练参数(包括通过继承得到的父类中的参数) 可示例代码如下: params = list(model.named_parameters()) (name, param) = params[28] print(name) print(param.grad) print('-------------------------------------------------') (name

随机推荐