pytorch和tensorflow的爱恨情仇之张量
pytorch和tensorflow的爱恨情仇之基本数据类型:https://www.cnblogs.com/xiximayou/p/13759451.html
pytorch版本:1.6.0
tensorflow版本:1.15.0
基本概念:标量、一维向量、二维矩阵、多维张量。
1、pytorch中的张量
(1)通过torch.Tensor()来建立常量
这里有两种张量,一种是直接通过toch.Tensor()建立的,另一种是 Variable()建立的,它们的区别是:在新版本的torch中可以直接使用tensor而不需要使用Variable。
在旧版本中Variable和Tensor的区别在于,Variable可以进行误差的反向传播,而Tensor不可以。
Variable默认的requires_grad也是False。
我们接下来看看使用torch.Tensor()来看看例子:
对于常量,是不能够在声明指定其需要梯度计算的,如下所示:
为什么使用torch.Tensor()不可以直接指明requires_grad=True呢,但是可以通过显示指定a.requires_grad=True。我的理解是常量和变量之间是可以互相转换的,当将requires_grad通过(数据.requires_grad=True)后,该常量已经变成了变量。
(2)通过from torch.autograd import Variable来建立变量
我们传入的值就不能是一个列表了,需要一个张量,我们可以这么做:
这也可以说明常量是可以转换为变量的。但需要注意的是由常量转换而来的变量就不是原来的常量了:
(3) 通过torch.tensor()更加灵活的建立常量和变量
我们还需要注意的是使用torch,Tensor()和torch.tensor()以及Variable()区别:这里可以直接传入一个列表啦
我们也可以直接使用torch.tensor()来定义一个变量,通过指定requires_grad来标明该变量是否能够进行梯度计算并进行更新。
2、tensorflow中的张量
在tensorflow中,可以通过tf.consatnt()和tf.Variable()来建立张量,与pytorch旧版本类似的是,tf.constant()对应torch.Tensor(),tf.Variable()对应torch.Variable(),tf.constant创建的是常数,tf. Variable创建的是变量。变量属于可训练参数,在训练过程中其值会持续变化,也可以人工重新赋值,而常数的值自创建起就无法改变。
其中tf.assign()是将b的值赋值给a,因为a是常量,因此不可改变,就会报该错误,再看下面一个例子:
我们将10赋值给state,然后新建了一个变量state_。state是一个变量,这样是没有问题的,这样的话在训练的过程中我们就可以不断地更新参数了。 再看一个例子:
在这种情况下,我们仅仅只是将a指向的值改为指向b,并没有真正修改a的值。
如果我们像pytorch那样将常量转换为变量:
会发现,其实是新建了一个变量,并不是将原始的常量变为了变量、
如果有什么错误还请指出,有什么遗漏的还请补充,会进行相应的修改。
pytorch和tensorflow的爱恨情仇之张量的更多相关文章
- pytorch和tensorflow的爱恨情仇之定义可训练的参数
pytorch和tensorflow的爱恨情仇之基本数据类型 pytorch和tensorflow的爱恨情仇之张量 pytorch版本:1.6.0 tensorflow版本:1.15.0 之前我们就已 ...
- pytorch和tensorflow的爱恨情仇之参数初始化
pytorch和tensorflow的爱恨情仇之基本数据类型 pytorch和tensorflow的爱恨情仇之张量 pytorch和tensorflow的爱恨情仇之定义可训练的参数 pytorch版本 ...
- pytorch和tensorflow的爱恨情仇之基本数据类型
自己一直以来都是使用的pytorch,最近打算好好的看下tensorflow,新开一个系列:pytorch和tensorflow的爱恨情仇(相爱相杀...) 无论学习什么框架或者是什么编程语言,最基础 ...
- pytorch和tensorflow的爱恨情仇之一元线性回归例子(keras插足啦)
直接看代码: 一.tensorflow #tensorflow import tensorflow as tf import random import numpy as np x_data = np ...
- Menu与ActionBar的爱恨情仇
最近在开发一款音乐播放器,在开发过程中遇到了一点小麻烦,通过android API搞清楚了Menu与ActionBar的爱恨情仇,写了个小Demo祭奠一下那些年我们陷进去的坑,有不对的地方请大神们批评 ...
- web移动端fixed布局和input等表单的爱恨情仇 - 终极BUG,完美解决
[问题]移动端开发,ios下当fixed属性和输入框input(这里不限于input,只要可以调用移动端输入法的都包括,如:textarea.HTML5中contenteditable等),同时存在的 ...
- 注解:大话AOP与Android的爱恨情仇
转载:大话AOP与Android的爱恨情仇 1. AOP与OOP的区别 平时我接触多的就是OOP(Object Oriented Programming面向对象).AOP(Aspect Oriente ...
- 除了love和hate,还能怎么表达那些年的“爱恨情仇”?
实用英语 帮你全面提高英语水平 关注 童鞋们每次刷美剧的时候,相信都会被CP感满满的男女主角虐得体无完肤吧. 可是,一到我们自己表达爱意或者恨意的时候,却苦于词穷,只会用love, like, hat ...
- 对json的爱恨情仇
本文回想了对json的爱恨情仇. C++有风险,使用需慎重. 本文相关代码在:http://download.csdn.net/detail/baihacker/7862785 当中的測试数据不在里面 ...
随机推荐
- Nginx Ingress on TKE 部署最佳实践
概述 开源的 Ingress Controller 的实现使用量最大的莫过于 Nginx Ingress 了,功能强大且性能极高.Nginx Ingress 有多种部署方式,本文将介绍 Nginx I ...
- 用Python发一封图文并茂的邮件
最近使用了不少通讯工具的接口, 比如企业微信机器人,钉钉,微信公众号的接口(未认证的订阅公众号),相对于邮件来说,它们的表现形式太弱.比如没有更丰富的版本方式.当然了,并不是说表现形式越棒就是约好的通 ...
- 初级知识点一——C#中的值类型与引用类型
从C#语言的定义中可以知道,C#支持两种值类型,分别是 值类型和引用类型,那么两者的区别到底在哪儿呢? 值类型特点: 1. 值类型包含 a 预定义的值类型 b 用户自定义的值类型(struct) 2. ...
- string matching(拓展KMP)
Problem Description String matching is a common type of problem in computer science. One string matc ...
- SpringBoot整合Quartz及log4j实例
SpringBoot整合Quartz及log4j实例 因为之前项目中经常会做一些定时Job的东西,所以在此记录一下,目前项目中已经使用elastic-job,这个能相对比Quartz更加简单方便一些, ...
- springboot入门遇到Whitelabel Error Page错误
错误页面: 解决方法: 启动类要放在最外层,改成下面的
- MyBatis动态SQL(使用)整理
MyBatis 令人喜欢的一大特性就是动态 SQL.在使用 JDBC 的过程中, 根据条件进行 SQL 的拼接是很麻烦且很容易出错的.MyBatis 动态 SQL 的出现, 解决了这个麻烦. MyBa ...
- JS语法_集合
数组方法 forEach // no-log Array.prototype.forEach_ = function (cb) { let len = this.length for (let i = ...
- HTML标签语言一览表
<html> ● 文件声明 让浏览器知道这是 html 文件 <head> ● 开头 提供文件整体资讯 <title> ● 标题 定义文件标题,将显示于浏览顶端 & ...
- memcached缓存:安装和清缓存
一.安装步骤: 1.将工具一直解压,解压到最底层的exe目录