首页 > 其他分享 >机器学习——参数管理

机器学习——参数管理

时间:2023-11-01 13:56:55浏览次数:35  
标签:初始化 机器 weight 42 学习 init 参数 net

参数访问

我们从已有模型中访问参数。 当通过Sequential类定义模型时, 我们可以通过索引来访问模型的任意层。 这就像模型是一个列表一样,每层的参数都在其属性中。 如下所示,我们可以检查第二个全连接层的参数。

print(net[2].state_dict())
OrderedDict([('weight', tensor([[-0.0427, -0.2939, -0.1894,  0.0220, -0.1709, -0.1522, -0.0334, -0.2263]])), ('bias', tensor([0.0887]))])

输出的结果告诉我们一些重要的事情: 首先,这个全连接层包含两个参数,分别是该层的权重和偏置。 两者都存储为单精度浮点数(float32)。 

 

print(type(net[2].bias))
print(net[2].bias)
print(net[2].bias.data)
<class 'torch.nn.parameter.Parameter'>
Parameter containing:
tensor([0.0887], requires_grad=True)
tensor([0.0887])

 

net[2].weight.grad == None
True

 

注意,每个参数都表示为参数类的一个实例。参数是复合的对象,包含值、梯度和额外信息。 这就是我们需要显式参数值的原因。 除了值之外,我们还可以访问每个参数的梯度。

 

参数初始化

默认情况下,PyTorch会根据一个范围均匀地初始化权重和偏置矩阵, 这个范围是根据输入和输出维度计算出的。 PyTorch的nn.init模块提供了多种预置初始化方法。

 

下面举例说明对某些块应用不同的初始化方法。 例如,下面我们使用Xavier初始化方法初始化第一个神经网络层, 然后将第三个神经网络层初始化为常量值42。(以PyTorch为例)

 

def init_xavier(m):
    if type(m) == nn.Linear:
        nn.init.xavier_uniform_(m.weight)
def init_42(m):
    if type(m) == nn.Linear:
        nn.init.constant_(m.weight, 42)

net[0].apply(init_xavier)
net[2].apply(init_42)
print(net[0].weight.data[0])
print(net[2].weight.data)
tensor([ 0.5236,  0.0516, -0.3236,  0.3794])
tensor([[42., 42., 42., 42., 42., 42., 42., 42.]])

 

自定义参数初始化

 

参数绑定

 

标签:初始化,机器,weight,42,学习,init,参数,net
From: https://www.cnblogs.com/yccy/p/17802928.html

相关文章

  • 机器学习——层和块
    一个块可以由许多层组成;一个块可以由许多块组成。块可以包含代码。块负责大量的内部处理,包括参数初始化和反向传播。层和块的顺序连接由Sequential块处理。 下面给出一个例子(以pyTorch为例)classNestMLP(nn.Module):def__init__(self):super()._......
  • Java学习之路(三)
    Java学习之路(三)1、数组定义:数组就是存储数据长度固定的容器,存储多个数据的数据类型要一致。1.1、数组定义的格式1、数据类型[]数组名2、数据类型数组名[]int[]arr;intarr[];double[]arr;doublearr[];char[]arr;chararr[];1.2、动态初始......
  • c语言学习(结构体初始化)42
    利用例题直接阐释:#define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>structhobby//hobby:爱好{charcolor[10];charsports[10];};structstu{charname[10];intage;structhobbys2;doubleheight;};intmain(){structstu......
  • Match第三个参数为-1时的计算规则(旧文迁移)
    以前学二分法的时候,一直以为,Match的第三个参数只要不为0就是以二分法规律进行查找的,可是今天测试了一下,发现人家用的居然是历遍法,规则是:从上往下开始找,遇到比查找值小的前一个的位置,或者第一次出现与查找值相同的位置;如果查找值比查找范围内的第一个值大,则结果为NA;如果查找值比查找......
  • Python学习笔记(一)蒙特卡罗算法求圆周率π
    绪论\(\pi\)(圆周率)是数学和物理学普遍存在的常数之一,可以被定义为圆周长和直径之比或者圆的面积与半径平方之比(\(l=2\pir\)和\(S=\pir^2\))。\(\pi\)是一个无理数,下面将用蒙特卡罗算法求\(\pi\)的数值近似。要求1.要求能算到小数点后面越多越好‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫......
  • 国产蓝牙PHY6222支持BLE5.2参数特性介绍支持MESH/透传/定位
    特性:封装;QFN32工作电压范围1.8v至3.6v嵌入式buckdc-dc和ldos电池监视器关断电流0.3uA睡眠电流1uA4.7mA的接受电流为3.3V4.7mA的0db的发射功率为3.3vMCU:<60uA/MHz支持ble2mbps协议BLE5.1可兼容BLE5.0支持mash组网传输速率-90dBm125khz传输速率-103dBm温度:-40℃~125......
  • python深浅拷贝学习
    copy的原文链接(仅供自己学习查看):python浅析格式化输出和深浅copy-战争热诚-博客园(cnblogs.com) 首先我们从切片技术说起。它应用于所有的序列,包括:列表,字符串,元祖。但是切片不能应用于字典,对于字典只能使用D.copy()和D.deepcopy()方法。下面具体说一下深......
  • C#.NET使用multipart/form-data方式上传文件及参数
    publicstaticstringUploadPeopleFaceRequest(AddVisitorRequestDtoaddVisitorRequestDto){try{stringurl=_faceIp+"/fastgate/visitor";Dictionary<string,object>parameters=newDictionary<string,object>......
  • C语言-2.结构学习
    结构1.1顺序~2.1选择~3.1.1关系运算符类型类型优先级小于<小于等于<=优先级相同(高)大于>大于等于>=优先级相同(高)等于==不等于!=优先级相同(低)tips:将数值放前,可以判断该字符是否为前面已经运用的变量。如3=a,若前面a已经被赋值,则会出现语法错......
  • JVM参数调优
    配置文件在tomcat/bin目录下catalina.sh中 JAVA_OPTS="-server-Xms595M-Xmx595M-Xmn223M-XX:SurvivorRatio=10-Xss1M-XX:+UseConcMarkSweepGC-XX:+CMSClassUnloadingEnabled-XX:+UseCMSCompactAtFullCollection-XX:+ExplicitGCInvokesConcurrent-Djava.rmi.server.......