pyTorch学习基础案例一-熊猫图片切分

图片可以用3维张量表示

往下看搞懂0维张量,1维张量,2维张量和你理解的变量,1维数组,2维数组,向量,矩阵是什么意思和对应关系;是不是很神奇??很兴奋??一步步玩嘛~

# 张量切片的演示
sales = torch.FloatTensor([1000.0,323.2,333.4,444.5,1000.0,323.2,333.4,444.5])
print(sales[:5]) #切片张量,取0-5 的值
print(sales[:-5]) #切片张量,去掉倒数5个值
sales = torch.eye(3) #为了生成对角线全1,其余部分全0的二维数组
print(sales)

# 加载一组图片。创建4维张量
from glob import glob
#Read cat images from disk
data_path='cats/'
cats = glob(data_path+'*.jpg')
#Convert images into numpy arrays
cat_imgs = np.array([np.array(Image.open(cat).resize((224,224))) for cat in
cats[:64]])
cat_imgs = cat_imgs.reshape(-1,224,224,3) #reshape 是维度转换函数
cat_tensors = torch.from_numpy(cat_imgs)
print(cat_tensors.size()) #打印torch.Size([4, 224, 224, 3]) 加载了4张照片的张量

# 张量的基本运算符+
a = torch.rand(2,2)
print(a)
b = torch.rand(2,2)
c = a + b #加法等价
d = torch.add(a,b) #加法等价

a.add_(5)
print(a)
print(c)
print(d)
print("=================================")
# 张量的基本运算符 乘法;新张量的结果是张量A和张量B的每一个对应位置元素相乘。
a = torch.rand(2,2)
print(a)
b = torch.rand(2,2)
print(b)
print(a*b)
print(a.mul(b))
print(a.matmul(b))

import numpy as np #numpy是一个广泛支持机器学习算法的科学计算框架,CPU,这个比较老。0-2维度的计算。
import torch #torch是一个广泛支持机器学习算法的科学计算框架,GPU,这个新支持深度学习的框架。能计算更高维度。0-5个维度的计算
from PIL import Image #图形处理的库
from matplotlib import pyplot as plt #绘图的库

panda = np.array(Image.open('panda.jpg').resize((224,224))) #用PIL包从磁盘读入图像并转成numpy数组
panda_tensor = torch.from_numpy(panda) #把numpy数组转成张量panda_tensor熊猫张量,张量是一个可以支持更高维度的数组
# 标量=变量=一个元素=0维张量。如:3
# 向量=1维数组=1维张量 如:[23,45,66,77,88,11,32,12]
# 矩阵=2维数组=2维张量 如:  [1,3,5]
#                        [2,6,2]
#                        [6,3,2]
# 3维张量,一个图片的表示是三维[224, 224, 3] (224高度,224宽度,3RGB通道数)
# 4维张量,一组图片的表示是四维[30,224,224,3] (30数量,224高度,224宽度,3RGB通道数)
# 5维张量,视频的表示是五维[1,30,224,224,3] (1批,30帧\秒,224高度,224宽度,3RGB通道数),一部电影[40,30,224,224,3] 是40个30秒的片段
# GPU张量,大量计算时,比如张量矩阵乘法,CPU的效率低,通过panda_tensor.cuda() 在GPU上计算。
print(panda_tensor.size()) #打印出torch.Size([224, 224, 3]),(高度,宽度,RGB通道数)
#plt.imshow(panda); # 绘制熊猫图
#plt.imshow(panda_tensor[:,:,0].numpy()); # 绘制RGB 0通道的熊猫图
plt.imshow(panda_tensor[25:175,60:130,0].numpy()); # 绘制裁剪出熊猫头部的熊猫图。图片高度25-175之间,图片宽度60-130之间,RGB通道0

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值