• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

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

python 搞代码 4年前 (2022-01-08) 26次浏览 已收录 0个评论

今天小编就为大家分享一篇Pytorch基本变量类型FloatTe来源gaodaimacom搞#代%码网nsor与Variable用法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

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) 

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

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

以上就是Pytorch基本变量类型FloatTensor与Variable用法的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Pytorch基本变量类型FloatTensor与Variable用法

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址