栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

pytorch nn.linear() 原理

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

pytorch nn.linear() 原理

0. 做了啥到底


nn.linear()是用来设置网络中的全连接层的,从源码上看到其实就是对输入的数据做一次线性变化,通过构造参数矩阵A来给输入X做维度变换。

1.怎么用

比如下例子中我们要把【64,32】–>【64,64】

import torch
from torch import nn
a = torch.randn(64,32)
# e.g., 想要让 [batch_size, input_dim] ---> [batch_size,out_dim]
# do:  nn.Linear( input_dim, out_dim, bias)
#(自注) torch中 对于linear input大于两维的,好像前面的dim视为样本数这类的,所以只改动后面的dim
linear = nn.Linear(32,64)
b = linear(a)
print(a.shape)
print(b.shape)
print(linear.weight)

不知道大家发现没有,这里的参数weight的shape是 out * input 而不是我们直观的理解的input * out。 这里其实nn.linear 是调用torch funcion 里的linear的,F.function 里用的就是weight.T()

也就是让input通过和参数weight的transport做矩阵乘法

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/942264.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号