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 当中的測试数据不在里面 ...
随机推荐
- [ASP.NET Core开发实战]基础篇02 依赖注入
ASP.NET Core的底层机制之一是依赖注入(DI)设计模式,因此要好好掌握依赖注入的用法. 什么是依赖注入 我们看一下下面的例子: public class MyDependency { pub ...
- 获取android手机的屏幕分辨率 android开发
/** * 获取屏幕分辨率 */ private void getResolution() { // TODO Auto-generated method stub Display display = ...
- android studio 如何进行格式化代码 快捷键必备
在Eclipse中,我们一般使用Ctrl+Shift+F来格式化代码,Android Studio中需要换成: Reformat code CTRL + ALT + L (Win) OPTION + ...
- android 使用svg 和 webp
1.参考 https://chris.banes.dev/2016/02/25/appcompat-vector/#enabling-the-flag 2.使用svg 2.1 在中打开svg选项 an ...
- 【译】Object Storage on CRAQ 上篇
摘要 大型存储系统通常会在许多可能出故障的组件上进行数据复制和数据分区,从而保证可靠性和可扩展性.但是许多商业部署系统为了实现更高的可用性和吞吐量,牺牲了强一致性,特别是那些实时交互系统. 本论文介绍 ...
- 当this碰到return会发生什么
当this碰到return时 function fn(params) { this.user = 'fzy' return {} } var a = new fn console.log(a.user ...
- 小白也能弄得懂的目标检测YOLO系列之YOLOv1网络训练
上期给大家介绍了YOLO模型的检测系统和具体实现,YOLO是如何进行目标定位和目标分类的,这期主要给大家介绍YOLO是如何进行网络训练的,话不多说,马上开始! 前言: 输入图片首先被分成S*S个网格c ...
- Linux平台Zabbix Agent的安装配置
这里简单总结一下Linux平台Zabbix Agent的安装配置,实验测试的Zabbix版本比较老了(Zabbix 3.0.9),不过版本虽然有点老旧,但是新旧版本的安装步骤.流程基本差别不大.这里的 ...
- SpringIOC初始化过程--详解
SpringIOC初始化过程 相信大家都知道Spring这个东西,我们经常来用他一些特性,比如说他的AOP,IOC,那今天就带大家解析下SpringIOC的加载过程. 我们来看一个例子 Annotat ...
- SpringBoot版不需要配置文件注解获取当前登录用户
本文讯(2019年3月30日 飞快的蜗牛博客) 我是一个懒人,很久不写博客,想起来看到也不一定会写,只有心血来潮的时候写写,"钱塘江上潮信来,今日方知我是我"...... 空杯 ...