Pytorch学习笔记(一)--Tensor和Variable

本学习笔记均基于ubantu16.04上的pytroch,在正式笔记开始之前有两点
一.安装问题
在安装pytorch时候走了很多弯路和问题
因每个人的问题不同,教程不在此赘述,但总的顺序如下:

  1. 安装nvida cuda
  2. cudnn
  3. gpu版本的pytorch

二.学习教程
本次需系笔记全部基于廖星宇的<深度学习入门之pytroch>,git地址如下
https://github.com/L1aoXingyu/code-of-learn-deep-learning-with-pytorch

正式开始学习pytorch

Tensor(张量)与Variable(变量)

tensor表示一个的多维矩阵,tensor可以与numpy的ndarray相互转化,不同的是pytorch可以在GPU上运行
variable可以看作是tensor的封装其包含

{
	.data           //数值
 	.grad			//梯度
	.grad_fn		//得到variable的操作
}

通过了文末以下一系列的代码来认识tensor variable

matplotlib绘图
在最后用python画图包来画出y=x^2图像,并以上梯度求出x=2出导数

安装matplotlib

sudo apt install python3-pip
sudo apt-get install python3-tk
pip3 install matplotlib
print("构建函数y=x^2,并求x=2导数")
import matplotlib.pyplot as plt
x = np.arange(-3,3.01,0.1)
y = x **2
plt.plot(x,y)
plt.plot(2,4,'ro')
plt.show()
x=Variable(torch.FloatTensor([2]),requires_grad=True)
y=x **2
y.backward()
print(x.grad)

在这里插入图片描述

import torch
import numpy as np

numpy_tensor = np.random.randn(10,20)

pytorch_tensor1 = torch.Tensor(numpy_tensor)
pytorch_tensor2 = torch.from_numpy(numpy_tensor)
# 如果 pytorch tensor 在 cpu 上
numpy_array = pytorch_tensor1.numpy()
# 如果 pytorch tensor 在 gpu 上
numpy_array = pytorch_tensor1.cpu().numpy()

# 可以通过下面两种方式得到 tensor 的大小
print(pytorch_tensor1.shape)
print(pytorch_tensor1.size())

# 得到数据类型
print(pytorch_tensor1.type())

#得到维度
print(pytorch_tensor1.dim())

#得到所有元素个数
print(pytorch_tensor1.numel())

x = torch.randn(3,2)
x = x.type(torch.DoubleTensor)
x_arry = x.numpy()
print(x_arry.dtype)

x = torch.ones(2,2)
print(x)
print(x.type())

x = x.long()
print("x转化整型")
print(x)

x = torch.randn(4,3)
print("随机四行三列的x")
print(x)
max_value,max_idx = torch.max(x,dim=1)
print("输出每行的最大值")
print(max_value)
print("每行最大值的下标")
print(max_idx)
sum_x = torch.sum(x,dim=1)
print("每一行求和")
print(sum_x)
y = torch.randn(4,3)
z = x + y
print("输出xyz")
print(x,"\n",y,"\n",z)

#以下为variable
print("variable是对tensor的封装,以下为variable")
from torch.autograd import Variable
x_tensor = torch.randn(10, 5)
y_tensor = torch.randn(10, 5)

# 将 tensor 变成 Variable
x = Variable(x_tensor, requires_grad=True) # 默认 Variable 是不需要求梯度的,所以我们用这个方式申明需要对其进行求梯度
y = Variable(y_tensor, requires_grad=True)

z = torch.sum(x + y)
print(z.data)
print(z.grad_fn)
#求x,y的梯度
z.backward()
print(x.grad)
print(y.grad)

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值