# -*- coding:utf-8 -*-
import torch
import numpy as np
#根據torch.tensor生成張量
print(torch.tensor(1))
print(torch.tensor((2,3)))
print(torch.tensor([2,3]))
#根據torch.tensor生成張量
print(torch.tensor(3))
print(torch.tensor(3,4))
print(torch.tensor((3,4)))
print(torch.tensor([3,4]))
#張量和numpy陣列的相互轉化
#將numpy陣列轉化為張量
f=np.ones((3,4))
print(f)
print(torch.as_tensor(f))
print(torch.from_numpy(f))
#將張量轉化為陣列 .numpy()
print(torch.as_tensor(f).numpy())
torch.manual_seed(100)
a=torch.normal(mean=0.0,std=torch.tensor(1.0))
print(a)
c=torch.ones(2,3)
print(c)
d=torch.rand_like(c) #rand_like生成尺寸一樣的張量
print(d)
e=torch.randn(3,3)
print(e)
f=torch.randn_like(e)
print(f)
g=torch.randperm(10) #生成隨機生成的從0到9的一維的張量
print(g)
h=torch.arange(start=0,end=10,step=2)
print(h)
j=torch.linspace(start=1,end=10,steps=5) #生成從1到10等間距的5個數,包括1和10
print(j)
#torch.zeros(3,3)
#torch.ones(3,3)
#torch.eye(3,3)
#torch.full((3,3),fill_value=0.25)
#torch.empty(3.3)
#print(torch.empty(3.3)) #生成乙個空張量看,沒有賦值
##############################
#張量操作
##############################
#1 改變張量的形狀
a=torch.arange(12.0)
print(a)
print(a.reshape(3,4))
print(a.reshape(-1,3))
print(a.resize_(2,6))
print(a)
print("*"*90)
#2 增加維度和減少維度
a=torch.arange(12).reshape(2,6)
print(a.size())
b=torch.unsqueeze(a,dim=0) #在第一維上面加上乙個維度
print(b.size())
c=b.unsqueeze(dim=3)
print(c.size())
d=c.squeeze(dim=3) #squeeze只能去除維度為1的地方
print(d.size())
e=torch.squeeze(c,dim=3)
print(e.size())
print("#"*90)
a=torch.arange(10)
b=a.expand(2,-1)
print(a)
print(a.size())
print(b)
print(b.size())
print("@"*100)
a=torch.arange(12).reshape(1,3,4)
print(a)
print(a[0].size())
print(a[:,:2,:])
print(a[:,:2,:].size())
##############################
#張量拼接和拆分
##############################
print("*"*100)
a=torch.arange(8).reshape(2,4,1)
print(a)
b=torch.linspace(0,10,8).reshape(2,4,1)
print(b)
#在0維度上拼接張量 在第0個維度上拼接
c=torch.cat((a,b),dim=0)
print(c.size())
#在1維度上拼接張量,在第1維度上拼接
c=torch.cat((a,b),dim=1)
print(c.size())
#coding:utf-8
import torch
#張量的基本運算
#元素的計算
a=torch.arange(6.0).reshape(2,3)
b=torch.linspace(10.0,20.0,steps=6).reshape(2,3)
print("a=",a)
print("b=",b)
print("a*b=",torch.mul(a,b))
print("a*b=",a*b)
print(torch.eq(torch.mul(a,b),a*b))
print("a/b=",a/b)
#矩陣的轉置
c=torch.t(a)
print("c= ",c)
print("*"*100)
#矩陣相乘 torch.matmul針對高維度後面兩個進行矩陣乘法,torch.mm只針對兩個維度
a=torch.arange(6.0).reshape(2,3)
b=torch.linspace(10.0,20.0,steps=6).reshape(3,2)
print(torch.matmul(a,b).size())
print(torch.mm(a,b).size())
#函式作用
#計算兩個tensor的矩陣乘法,torch.bmm(a,b),tensor a 的size為(b,h,w),tensor b的size為(b,w,h),注意兩個tensor的維度必須為3.
Pytorch的基本操作
建立 檢視形狀 建立指定形式的張量 操作方法 加減乘除 以及操作裝置 cpu gpu 1 torch.tesor 建立張量 2 torch.view 對張量進行降維 3 torch.size 檢視張量的形狀 4 torch.ones torch.zeros 建立指定形式的張量 5 torch.to ...
pytorch入門1 1(基本操作)
本節繼續來講pytorch的入門級操作,加加減減 拍平拉直的操作。在操作張量的的時候,肯定少不了張量之間的加減乘除。二維世界的張量就是矩陣,是不是像我們學數學那樣直接用 直接操作就好了呢?x torch.tensor 1,2 3,4 y torch.ones 2,2 x y 對應元素相加 x y 對...
pytorch入門1 0(基本操作)
pytorch入門1.0 主要是關於張量的建立 運算 索引等一些基本操作。隨便練習一下,增加對張量操作的熟悉程度。1.pytorch是什麼?pytorch是2017年由facebook人工智慧研究院 fair 基於torch推出的乙個開源python機器學習庫。該庫能借助gpu加速張量的計算 亦具有...