这是本人刚学习pytorch时学习的代码,虽然不是百分百本人亲自写的,但是也修改注释了一下。本来代码就是开源的,因此,就特地分享出来供大家一起学习,一起↖(ω)↗。希望刚学pytorch的耐心把它看完,真的很有帮助~
上车吧,骚年~
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# Author: yehaizi time:2019/8/13:15:37
# pytorch 基础1
# 首先要引入相关的包
import torch
import numpy as np
# 打印一下 pytorch的版本
print(torch.__version__)
# 创建一个简单的张量
x=torch.rand(2,3)
print(x)
# 查看生成的张量(矩阵)的大小,可以使用和numpy相同的shape,也可以使用size()函数
print(x.shape)
print(x.size())
# 生成多维的张量 以下可以这么理解,生成了一个四维的张量(矩阵),
# 该四维张量包含2个三维数组,每个三维数组三个二维数组,每个二维数组是4行5列
y=torch.rand(2,3,4,5)
print(y)
print(y.size())
# 在同构的意义下,第零阶张量(r=0)为标量 (Scalar),第一阶张量(r=1)为向量 (Vector),
# 第二阶张量(r=2)则成为矩阵 (Matrix),第三阶以上的统称为多维张量。
# 生成一个标量
scalar=torch.tensor(3.1433323)
print(scalar)
print(scalar.size())
print(scalar.shape)
# 对于标量,我们可以直接使用 .item() 从中取出其对应的python对象的数值
print(scalar.item())
# 特别的:如果张量中只有一个元素的tensor也可以调用tensor.item方法
tensor = torch.tensor([3.1433223])
print(tensor)
print(tensor.size())
print(tensor.item())
print('以上为张量的基本概念')
# Tensor的基本数据类型有五种
# 32位浮点型:torch.FloatTensor。 (默认)
# 64位整型:torch.LongTensor。
# 32位整型:torch.IntTensor。
# 16位整型:torch.ShortTensor。
# 64位浮点型:torch.DoubleTensor。
long=tensor.long()
print(long)
half=tensor.half()
print(half)
print('以下为numpy和tensor的转换')
# Numpy转换 使用numpy方法将Tensor转为ndarray randn()返回标准正态分布(均值为0,方差为1)中抽取的一组随机数。
a=torch.randn(3,2)
print(a)
# tensor转化为numpy
numpy_a=a.numpy()
print(numpy_a)
# numpy转化为tensor
torch_a=torch.from_numpy(numpy_a)
print(torch_a)
# Tensor和numpy对象共享内存,所以他们之间的转换很快,而且几乎不会消耗什么资源。但这也意味着,如果其中一个变了,另外一个也会随之改变。
print('以下为设备间转换')
# 设备间转换 这里的设备指的是cpu和gpu之间
# cpu转换到gpu 一般情况下可以使用.cuda方法将tensor移动到gpu,这步操作需要cuda设备支持
cpu_a=torch.rand(4, 3)
print(cpu_a)
print(cpu_a.type())
gpu_a=cpu_a.cuda()
print(gpu_a)
print(gpu_a.type())
# gpu转到cpu 使用.cpu方法将tensor移动到cpu
cpu_b=gpu_a.cpu()
print(cpu_b)
print(cpu_b.type())
print('以下为pytorch里的初始化方法')
# 初始化
# 1、使用[0,1]均匀分布随机初始化二维数组
rnd = torch.rand(5, 3)
print(rnd)
# 2、使用1填充
one = torch.ones(2, 2)
print(one)
# 初始化,使用0填充
zero=torch.zeros(2,2)
print(zero)
# 初始化一个单位矩阵,即对角线为1 其他为0
eye=torch.eye(2,2)
print(eye)