- 特性
pytorch的第一大特性是其能与numpy无缝对接转换
np_data = np.arange(6).reshape((2, 3)) #创建一个numpy数组
torch_data = torch.from_numpy(np_data) #将numpy转换为torch tensor
tensor2array = torch_data.numpy() #将torch tensor 转换为numpy
Variable 存放变化的值
import torch
from torch.autograd import Variable
tensor = torch.FloatTensor([[1,2],[3,4]])
variable = Variable(tensor, requires_grad=True) #requires_grad是参不参与误差反向传播, 要不要计算梯度
variable.data # 将Variable转成tensor 形式
variable.data.numpy() # 将Variable转成numpy形式
- 常用函数
torch.Tensor.view() 作用同numpy中的reshape,用来改变数组的结构
x = torch.randn(4, 4)
# torch.Size([4, 4])
z = x.view(-1, 8) # the size -1 is inferred from other dimensions
z.size()
# torch.Size([2, 8])
- 示例
这个是简单的网络分类的代码,下面的博文对其进行了解析
https://github.com/MorvanZhou/PyTorch-Tutorial/blob/master/tutorial-contents/302_classification.py
net = Net(n_feature=2, n_hidden=10, n_output=2)调试的时候看到是在这步自动完成权重初始化的
在调用交叉熵损失函数时,CrossEntropyLoss的默认输入时logit,out是没有被softmax激活output
loss_func = torch.nn.CrossEntropyLoss()
loss = loss_func(out, y)
未完待续。。。
参考资料
- 关于pytorchGPU使用的讨论帖
- BCEWithLogitsLoss解释
https://blog.csdn.net/qq_22210253/article/details/85222093 - pytorch官网 https://pytorch.org/tutorials/