老早都想强化一下pytorch的学习了,但是由于业务忙,事情多,拖到现在,今天正式的开始,本博客仅仅提供代码笔记,内部有注释,方便未来的阅读和学习!(不喜勿喷,为了自己学习!)

学习计划:代码+项目

 

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time : 2019/12/28 16:32
# @Author : LZQ
# @Software: PyCharm

from __future__ import print_function
import torch


# 构造一个5x3矩阵,不初始化
Mextri53=torch.empty(5,3)
print(Mextri53)

# 构造一个随机初始化的矩阵
Mextri53_2 = torch.rand(5, 3)
print(Mextri53_2)

# 构造一个矩阵全为 0,而且数据类型是 long.
Mextri53_3 = torch.zeros(5, 3, dtype=torch.long)
print(Mextri53_3)

# 构造一个张量,直接使用数据:
Mextri53_4 = torch.tensor([5.5, 3])
print(Mextri53_4)

# 创建一个tensor基于已经存在的tensor
Mextri53_5=Mextri53_4.new_ones(5,3,dtype=torch.double)
print(Mextri53_5)

Mextri53_6=torch.randn_like(Mextri53_5,dtype=torch.float)
print(Mextri53_6)
# 获取维度信息  torch.Size是一个元组,所以它支持左右的元组操作。
print(Mextri53_6.size())

Mextri53_y = torch.rand(5, 3)
print(Mextri53_6)
print(Mextri53_y)
# 按照矩阵的数位置相加 比如 ai+bi aj+bj  + 和 add相同
print(Mextri53_6 + Mextri53_y)
print(torch.add(Mextri53_6,Mextri53_y))


# 初始化一个5行3列的空数组(数组元素是随机默认的,不是null或0)
x=torch.rand(5,3)
y=x.new_ones(5,3,dtype=float)
print(x)
print(y)
result = torch.empty(5,3)
torch.add(x,y,out=result)
print(result)#输出add的结果
print(result[0])#输出result的第一行   tensor([1.5053, 1.0032, 1.8332])
print(result[0][0])#输出result的第一行的第一个元素   tensor(1.5053)
print(result.size())#输出尺寸:torch.Size([5, 3])


# 加法

x=torch.rand(5,3)
y=x.new_ones(5,3,dtype=float)
print(y)
y.add_(x) #输出x+y的结果
print(y)

x=torch.rand(5,3)#均匀分布0-1随机数
z=torch.randn(5,3)#正态分布随机数
y=x.new_ones(5,3,dtype=float)
print(x)
print(z)


# 改变大小:如果你想改变一个 tensor 的大小或者形状,你可以使用 torch.view
x=torch.randn(4,4)
y1=x.view(16) # 6元素向量
y2=x.view(1,16) # 1行16列向量
z=x.view(-1,8) #2行8列,倒数8个数为一列
print(x)
print(y1)
print(y2)
print(z)
print(x.size(), y1.size(),y2.size(), z.size())


# 获取tensor的值,用.item()
x = torch.randn(1)
print(x)
print(x.item())
y=torch.randn(4,4)
print(y)
for i in range(4):
    for j in range(4):
        print(y[i][j].item())

#x.t_() x 矩阵的转置
x=torch.randn(4,4)
print(x)
x.t_()
print(x)
y=x.numpy() #转换成numpy类型
print(y)

import numpy as np
# Tensor和numpy对象共享内存,所以他们之间的转换很快,而且几乎不会消耗什么资源。但这也意味着,如果其中一个变了,另外一个也会随之改变。
a = np.ones(5)
b=torch.from_numpy(a)
print(a)
print(b)
b.add_(1)
print(a)
print(b)

import numpy as np
# 只有一个元素的tensor也可以调用`tensor.item()`
scalar =torch.tensor(1)
print(scalar.item())