Pytorch基本变量类型FloatTensor与Variable用法


Posted in Python onJanuary 08, 2020

pytorch中基本的变量类型当属FloatTensor(以下都用floattensor),而Variable(以下都用variable)是floattensor的封装,除了包含floattensor还包含有梯度信息

pytorch中的dochi给出一些对于floattensor的基本的操作,比如四则运算以及平方等(链接),这些操作对于floattensor是十分的不友好,有时候需要写一个正则化的项需要写很长的一串,比如两个floattensor之间的相加需要用torch.add()来实现

然而正确的打开方式并不是这样

韩国一位大神写了一个pytorch的turorial,其中包含style transfer的一个代码实现

for step in range(config.total_step):

    
    # Extract multiple(5) conv feature vectors
    target_features = vgg(target)  # 每一次输入到网络中的是同样一张图片,反传优化的目标是输入的target
    content_features = vgg(Variable(content))
    style_features = vgg(Variable(style))

    style_loss = 0
    content_loss = 0
    for f1, f2, f3 in zip(target_features, content_features, style_features):
      # Compute content loss (target and content image)
      content_loss += torch.mean((f1 - f2)**2) # square 可以进行直接加-操作?可以,并且mean对所有的元素进行均值化造作

      # Reshape conv features
      _, c, h, w = f1.size() # channel height width
      f1 = f1.view(c, h * w) # reshape a vector
      f3 = f3.view(c, h * w) # reshape a vector

      # Compute gram matrix 
      f1 = torch.mm(f1, f1.t())
      f3 = torch.mm(f3, f3.t())

      # Compute style loss (target and style image)
      style_loss += torch.mean((f1 - f3)**2) / (c * h * w)  # 总共元素的数目?

其中f1与f2,f3的变量类型是Variable,作者对其直接用四则运算符进行加减,并且用python内置的**进行平方操作,然后

# -*-coding: utf-8 -*-
import torch
from torch.autograd import Variable

# dtype = torch.FloatTensor
dtype = torch.cuda.FloatTensor # Uncomment this to run on GPU

# N is batch size; D_in is input dimension;
# H is hidden dimension; D_out is output dimension.
N, D_in, H, D_out = 64, 1000, 100, 10

# Randomly initialize weights
w1 = torch.randn(D_in, H).type(dtype) # 两个权重矩阵
w2 = torch.randn(D_in, H).type(dtype)
# operate with +-*/ and **
w3 = w1-2*w2
w4 = w3**2
w5 = w4/w1


# operate the Variable with +-*/ and **
w6 = Variable(torch.randn(N, D_in).type(dtype))
w7 = Variable(torch.randn(N, D_in).type(dtype))
w8 = w6 + w7
w9 = w6*w7
w10 = w9**2
print(1)

基本上调试的结果与预期相符

Pytorch基本变量类型FloatTensor与Variable用法

所以,对于floattensor以及variable进行普通的+-×/以及**没毛病

以上这篇Pytorch基本变量类型FloatTensor与Variable用法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python字符类型的一些方法小结
May 16 Python
Python学习笔记之解析json的方法分析
Apr 21 Python
Python3简单实现串口通信的方法
Jun 12 Python
python常用库之NumPy和sklearn入门
Jul 11 Python
Python类如何定义私有变量
Feb 03 Python
python 实现在无序数组中找到中位数方法
Mar 03 Python
关于Python解包知识点总结
May 05 Python
python怎么删除缓存文件
Jul 19 Python
pycharm不以pytest方式运行,想要切换回普通模式运行的操作
Sep 01 Python
pytorch 中forward 的用法与解释说明
Feb 26 Python
python pyhs2 的安装操作
Apr 07 Python
Pytest之测试命名规则的使用
Apr 16 Python
python pycharm最新版本激活码(永久有效)附python安装教程
Sep 18 #Python
pytorch 中pad函数toch.nn.functional.pad()的用法
Jan 08 #Python
pycharm激活码有效到2020年11月底
Sep 18 #Python
pymysql的简单封装代码实例
Jan 08 #Python
pytorch使用 to 进行类型转换方式
Jan 08 #Python
Pycharm 2020年最新激活码(亲测有效)
Sep 18 #Python
Pytorch to(device)用法
Jan 08 #Python
You might like
文章推荐系统(三)
2006/10/09 PHP
PHP实现图片压缩的两则实例
2014/07/19 PHP
PHP中cookie和session的区别实例分析
2014/08/28 PHP
用php代码限制国内IP访问我们网站
2015/09/26 PHP
PHP数据库操作四:mongodb用法分析
2017/08/16 PHP
PHP安装BCMath扩展的方法
2019/02/13 PHP
Laravel-admin之修改操作日志的方法
2019/09/30 PHP
php实现图片压缩处理
2020/09/09 PHP
js修改input的type属性及浏览器兼容问题探讨与解决
2013/01/23 Javascript
JQuery Highcharts 动态生成图表的方法
2013/11/15 Javascript
jQuery Html控件基本操作(日常收集整理)
2016/03/11 Javascript
jQuery 插件封装的方法
2016/11/16 Javascript
Vue.js组件tree实现省市多级联动
2016/12/02 Javascript
BootStrap3中模态对话框的使用
2017/01/06 Javascript
原生js仿淘宝网商品放大镜效果
2017/02/28 Javascript
深入研究jQuery图片懒加载 lazyload.js使用方法
2017/08/16 jQuery
详解JavaScript基础知识(JSON、Function对象、原型、引用类型)
2018/01/16 Javascript
jquery实现的简单轮播图功能【适合新手】
2018/08/17 jQuery
Vue文件配置全局变量的实例
2018/09/06 Javascript
更改BootStrap popover的默认样式及popover简单用法
2018/09/13 Javascript
python 从远程服务器下载日志文件的程序
2013/02/10 Python
python搭建服务器实现两个Android客户端间收发消息
2018/04/12 Python
Python使用pickle模块报错EOFError Ran out of input的解决方法
2018/08/16 Python
详解如何用django实现redirect的几种方法总结
2018/11/22 Python
Python实现的插入排序,冒泡排序,快速排序,选择排序算法示例
2019/05/04 Python
Python面向对象魔法方法和单例模块代码实例
2020/03/25 Python
Python run()函数和start()函数的比较和差别介绍
2020/05/03 Python
80年代复古T恤:TruffleShuffle
2018/07/02 全球购物
澳大利亚优质葡萄酒专家:Vintage Cellars
2019/01/08 全球购物
Right-on官方网站:日本知名的休闲服装品牌
2019/07/12 全球购物
澳大利亚手袋、珠宝和在线时尚精品店:The Way
2019/12/21 全球购物
C++面试题目
2013/06/25 面试题
高三历史教学反思
2014/01/09 职场文书
农村优秀教师事迹材料
2014/08/27 职场文书
大学本科生职业生涯规划书范文
2014/09/14 职场文书
SpringBoot系列之MongoDB Aggregations用法详解
2022/02/12 MongoDB