PyTorch的nn.Linear()详解
1. nn.Linear()
-
nn.Linear():用于设置网络中的全连接层,需要注意的是全连接层的输入与输出都是二维张量
-
一般形状为[batch_size, size],不同于卷积层要求输入输出是四维张量。其用法与形参说明如下:
-
in_features
指的是输入的二维张量的大小,即输入的[batch_size, size]
中的size。 -
out_features
指的是输出的二维张量的大小,即输出的二维张量的形状为[batch_size,output_size]
,当然,它也代表了该全连接层的神经元个数。 -
从输入输出的张量的shape角度来理解,相当于一个输入为
[batch_size, in_features]
的张量变换成了[batch_size, out_features]
的输出张量。
用法示例:
复制import torch as t
from torch import nn
from torch.nn import functional as F
# 假定输入的图像形状为[3,64,64]
x = t.randn(10, 3, 64, 64) # 10张 3个channel 大小为64x64的图片
x = nn.Conv2d(3, 64, kernel_size=3, stride=3, padding=0)(x)
print(x.shape)
# 之前的特征图尺寸为多少,只要设置为(1,1),那么最终特征图大小都为(1,1)
# x = F.adaptive_avg_pool2d(x, [1,1]) # [b, 64, h, w] => [b, 64, 1, 1]
# print(x.shape)
# 将四维张量转换为二维张量之后,才能作为全连接层的输入
x = x.view(x.size(0), -1)
print(x.shape)
# in_features由输入张量的形状决定,out_features则决定了输出张量的形状
connected_layer = nn.Linear(in_features = 64*21*21, out_features = 10)
# 调用全连接层
output = connected_layer(x)
print(output.shape)
复制torch.Size([10, 64, 21, 21])
torch.Size([10, 28224])
torch.Size([10, 10])
分类:
A---pytorch框架
标签:
pytorch
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下