pytroch使用——(一)张量

一、基础知识

1、张量概念:多维数组

2、Vaiable:用于封装张量(因为需要对张量计算,如求导等,因此封装成一组对象)

data:被包装的数据、gard:张量梯度、grad_fn:记录张量所被应用的计算,主要还是用于求导、resquires_grad;是否求导、is_leaf:指示是否是叶子结点,用于构建结构图。注:device:表示张量所在设备,是加速的关键。

3、张量创建

1)直接创建

pytorch.tensor(),已经有数据了,有点像数据转化。

2)从numpy创建tensor:

torch.from_numpy(ndarray)。注:内存共享,该ndarray则tensor变化,反之也是。

3)依据数值创建:

                       torch.zeros(),layout:内存中的存储形式,默认即可(另一种是稀疏存储)

                               torch.ones_like():依据input形状创建全1张量。

                               torch.full()/ torch.full_like():依据input形状创建全value张量。

                               torch.arrange():创建等差数列。

                               torch.linespace():创建均分的一维数列。

                               torch.eye():创建单位对角矩阵(二维)。

4)依概率分步:

                           torch.normal(),正态分布。

                           torch.randn()/torch.randn_likes(),标准正态分布。

                           torch.rand()/torch.rand_likes(),均匀分布。

                           torch.randint()/torch.randint_likes(),整数均匀分布。

                           torch.randperm():生成0-1的随机排列。

                           torch.bernoulli(): 以input为概率生成伯努利分布。

4、张量操作

1)张量拼接与切分:

(1)troch.cat(inputs, dimension=0,out=None)、dim:沿着此维连接张量序列

(2)troch.stack(inputs, dimension=0,out=None)、dim:沿着此维连接张量序列

(3)torch.chunk(tensor, chunks, dim=0)、chunks:切分的分数(若不能整除,则最后一个张量长度小于其他张量)

(4)torch.split(tensor, split_size, dim=0)、split_size:为int时表示每一份的长度,为list时用其元素分块,list和一定要等于维度。

2)张量索引:

(1)torch.index_select(input, dim, index, out=None)、dim:要索引的维度,index:索引的序号

(2)torch.masked_select(input,mask,out=None)、mask: 与input同形状的布尔类型张量/t.ge():筛选函数,与mask常连用。

3)张量变换:

(1)torch.reshape(input,shape),当张量在内存中是连续时,新张量与input共享数据内存

(2) torch.transpose(input,dim0,dim1),dim0、dim1: 要交换的维度

(3)torch.t(input),转置

(4)torch.squeeze(input,dim=None,out=None),dim: 若为None,移除所有长度为1的轴;若指定维度,且该轴长度为1,则移除(去除维度)。

(5) torch.unsqueeze(),dim: 扩展的维度。

4)张量运算:

torch.add(input,alpha=1,other,out=None),逐元素计算 input+alpha×other。

torch.addcmul(input,value=1,tensor1,tensor2,out=None),逐元素计算

torch.addcdiv(input,value=1,tensor1,tensor2,out=None),逐元素计算

 

二、问题讲解

1、为什么需要虚拟环境?

因为不同的项目使用的python版本不同,使用的包也不同,为了管理不同的项目使用虚拟环境进行使用。

2、stack与cat的区别?

当dim的值不存在时,stack会多创建一个这样的维度(在第0维度上创建),其值为1;cat则会报错。

3、chunk如何取整?向上取整

举例:将长度7分割成三块。7%3=2.333=3=【3,3,1】并不是【3,2,2】。同时,其分配切块时大块排在靠前的维度。

4、索引的常用数据类型:torch.long 64位整型

三、实例:线性回归(分析两个变量间的关系的方法)

1、步骤:

1)确定模型:y = wx + b

2)损失函数:均方误差

3)梯度更新:w = w – LR * w.grad、b = b – LR * w.grad。

2、代码:

import torch
import matplotlib.pyplot as plt
torch.manual_seed(10)

lr = 0.05  # 学习率    20191015修改

# 创建训练数据
x = torch.rand(20, 1) * 10  # x data (tensor), shape=(20, 1)
y = 2*x + (5 + torch.randn(20, 1))  # y data (tensor), shape=(20, 1)

# 构建线性回归参数
w = torch.randn((1), requires_grad=True)
b = torch.zeros((1), requires_grad=True)

for iteration in range(1000):

    # 前向传播
    wx = torch.mul(w, x)
    y_pred = torch.add(wx, b)

    # 计算 MSE loss
    loss = (0.5 * (y - y_pred) ** 2).mean()

    # 反向传播
    loss.backward()

    # 更新参数
    b.data.sub_(lr * b.grad)
    w.data.sub_(lr * w.grad)

    # 清零张量的梯度   20191015增加
    w.grad.zero_()
    b.grad.zero_()

    # 绘图
    if iteration % 20 == 0:

        plt.scatter(x.data.numpy(), y.data.numpy())
        plt.plot(x.data.numpy(), y_pred.data.numpy(), 'r-', lw=5)
        plt.text(2, 20, 'Loss=%.4f' % loss.data.numpy(), fontdict={'size': 20, 'color':  'red'})
        plt.xlim(1.5, 10)
        plt.ylim(8, 28)
        plt.title("Iteration: {}\nw: {} b: {}".format(iteration, w.data.numpy(), b.data.numpy()))
        plt.pause(0.5)

        if loss.data.numpy() < 1:
            break

 

写文章

热门文章

  • 统计学习方法——(第四章)贝叶斯估计与参数估计总结,含MLE、MAP、Bayes例题与推导 7868
  • 文献精读——(第一篇)《深度卷积神经网络在计算机视觉中的应用研究综述》 7096
  • pytorch使用——(十)18种损失函数总结 6264
  • 编程准备——Pytorch虚拟环境创建与安装(含Torchvision) 5417
  • 图像图像处理作业—全局阈值迭代法和大津阈值法+python代码 5416

分类专栏

  • 小小白的读博之旅(从零开始的计算复杂性学习) 1篇
  • 随机过程 1篇
  • 算法笔记(蓝皮书,西瓜书,花书,CV) 28篇
  • 可解释性深度学习 3篇
  • 编程笔记(tensorflow,pytorch) 31篇
  • 文献阅读笔记(CNN,CV) 32篇
  • 图像处理技术杂记 2篇

最新评论

  • 统计学习方法——(第四章)贝叶斯估计与参数估计总结,含MLE、MAP、Bayes例题与推导

    Hello ! Mr.Lawrence: 最大似然估计P(X|Y)是不是推错了,和书上的结果不一样

  • 文献精读(二十二篇)——浅谈Neuro-Evolution

    hhhhhhhhhhkkkkkkkkkk: NEAT原论文全是英文,看不懂,终于找到一篇看起来比较好的了

  • 文献阅读——(第十三篇)ASTER:An Attentional Scene Text Recognizer with Flexible Rectification

    Coding-Prince: 学习了

  • 第一部分: Counting Problems基础

    泰山AI: 都是博主辛苦创作,我来支持一下,奥利给!

  • 编程准备——Pytorch虚拟环境创建与安装(含Torchvision)

    OURUO1233: 谢谢

最新文章

  • 第一部分: Counting Problems基础
  • 第一部分:随机事件与概率
  • 论文写作准备(三)—— 多目标优化问题与算法
2021年2篇
2020年79篇
2019年17篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

玻璃钢生产厂家铁岭玻璃钢雕塑公司安徽frp玻璃钢雕塑白城玻璃钢雕塑订制价格南通商场春季美陈玻璃钢仿真西红柿雕塑河西商场圣诞美陈玻璃钢抻像雕塑秦淮新年商场美陈邳州玻璃钢小天使的雕塑吴川玻璃钢胸像雕塑福建玻璃钢小绵羊雕塑出售玻璃钢雕塑厂家鄂尔多斯玻璃钢雕塑公司秋舞飞扬商场美陈布置枣庄校园玻璃钢雕塑仿真玻璃钢人物雕塑销售厂鹤壁泡沫玻璃钢雕塑福建玻璃钢雕塑销售电话山西定制玻璃钢雕塑供应商山东开业商场美陈报价福建高质量玻璃钢雕塑优势玻璃钢雕塑沙发定制青岛玻璃钢商场美陈玻璃钢人物雕塑设计一般多少钱玻璃钢卡通唱戏人物雕塑景观园林玻璃钢仿铜雕塑生产胶南玻璃钢造型雕塑玻璃钢花盆厂招聘油漆楚雄玻璃钢仿真雕塑树脂玻璃钢雕塑制作视频香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化