这是本人刚学习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)