pytorch踩坑记

本文记录了使用PyTorch构建神经网络时遇到的问题,包括输入必须为float类型以及默认按行处理输入的规则。此外,还探讨了CrossEntropyLoss实际上包含了Log_Softmax和NllLoss的功能。
摘要由CSDN通过智能技术生成

最近开始尝试用pytorch搭神经网络,踩了不少坑,开个帖子记录一下,如果有理解上的错误,请多多指出!

关于输入

1、pytorch的输入必须是float类型,在命令行里输入以下代码段可以验证

>>>import torch
>>>import torch.nn as nn
>>>a = torch.tensor([1, 2, 3])
>>>f = nn.Linear(3, 2)
>>>a = a.float()
>>>f(a)

直接执行b = f(a)会报错,告诉你需要float类型输入
2、pytorch按默认行处理输入,如果一个样本对应的输入为n维行向量v,对于m个输入,经过网络处理后的输出应有m行,列数等于输出的维数,通过下面的代码可以验证

>>>a = torch.tensor([[1, 2, 3], [4, 5, 6]])
>>>a = a.float()
>>>f = nn.Linear(3, 2)
>>>f(a)
>>>b = a[1]
>>>f(b)

f(a)的输出为tensor([[-3.0722, 1.8598],[-6.9518, 4.9386]])
f(b)的输出为tensor([-6.9518, 4.9386]),恰好是f(a)的第二行

关于损失函数

1、pytorch的CrossEntropyLoss()实际上是Log_Softmax()和NllLoss()的结合
默认有sof

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值