TensorFlow构建二维数据拟合模型(2)

变量的定义和使用

变量的定义与初始化

TensorFlow中,变量是一种特殊的张量,其值可以是一个任意类型的形状的张量。

与其他张量不同,变量存在于单个回话调用的上下文之外,主要作用是保存和更新模型中的参数。

声明变量通常使用tf.Variable()函数,其语法格式如表所示

函数说明

tf.Variable(

initial_value,

trainable=True,

collections=None,

validate_shape=True,

name=None)

主要作用是声明一个变量。

initial_value:必选,指定变量的初始值。所有可转换为张量的类型均可。

trainable:可选,设置是否可以训练,默认为True

collections:可选,设置该图变量的类型,默认为GraphKeys.GLOBAL_VARIABLES.

validate_shape:可选,默认为True。如果为False,则不进行类型和维度检查。

name:变量名称。如果未指定会自动分配一个唯一的值。

tf.Variable()的主要作用是构造一个变量并添加到计算图模型中。在运行其他操作之前,需要对所有变量进行初始化。

最简单的初始化方法是添加一个对所有变量进行初始化的操作,然后在使用模型前运行此操作。

最常见的方式是运行tf.global_variables_initializer()函数进行全局初始化,该函数会初始化计算图中所有的变量。

下面的代码演示了如何在模型中初始化变量

import tensorflow as tf
# tf.Variable()定义了一个1行3列的整型变量,该变量的初始值为1,2,3
v = tf.Variable([1,2,3],dtype=tf.int32) 
# tf.global_variables_initializer()定义了一个全局初始化操作。
init_op = tf.global_variables_initializer()
with tf.Session() as sess:#在会话中运行sess.run()初始化模型中的所有变量sess.run(init_op)print(sess.run(v))

随机初始化变量

在声明变量时需要指定初始化,一般使用随机数给TensorFlow的变量初始化,常见的初始化方法如下:

函数说明

tf.random_normal(

shape,

mean=0.0,

stddev=1.0,

dtype=tf.float32,

seed=None)

产生一个符合正态分布的张量。

shape:必选,生成张量的形状。

mean:可选,正态分布的均值,默认为0

stddev:可选,正态分布的标准差,默认为1.0

dtype:可选,生成张量的类型,默认为tf.float32.

seed:可选,随机数种子,是一个整数。当设置之后,每次生成的随机数都一样

tf.trunceated_normal(

shape,

mean=0,

stddev=1.0)

产生一个满足正态分布的张量,当如果随机数偏离平均值超过2个标准差以上,将会被重新分配一个随机数

shape:必选,生成张量的形状

mean:可选,正态分布的均值,默认为0.

stddev:可选,正态分布的标准差,默认为1.0

tf.random_uniform(

shape,

minval=low,

maxval=high,

dtype=tf.float32)

产生一个满足平均分布的张量

shape:必选,生成张量的形状

mean:必选,产生值的最小值

stddev:必选,产生值的最大值

dtype:可选,产生值的类型,默认为float32

下面代码分别用不用的方式产生变量

import tensorflow as tf #导入TensorFlow类库,别名为tf
#产生一个符合正态分布的2行3列张量,均值为0,方差为1,随机种子为1
w1 = tf.Variable(tf.random_normal([2,3],stddev=1,seed=1))
#产生一个截断的2行3列张量,均值为0,方差为1
w2 = tf.truncated_normal(shape=[2,3],mean=0,stddev=1)
#产生一个符合均匀分布的2行2列张量,最小值为1.0,最大值为2.0
w3 = tf.random_uniform((2,2),minval=1.0,maxval=2.0,dtype=tf.float32)
init_op = tf.global_variables_initializer()
#在会话中初始化计算图中的所有变量
with tf.Session() as sess:sess.run(init_op)print("w1:",sess.run(w1))print("w2:",sess.run(w2))print("w3:",sess.run(w3))

获取变量

除了可使用tf.Variable()创建变量,还可以使用tf.get_variable()函数创建或获取变量。

tf.get_variable()函数用于创建变量时,它和tf.Variable()的功能是等价的。

以下代码给出了通过两个函数创建变量的实例:

m = tf.Variable(tf.constant(1.0,shape=[1],name="m"))
n = tf.get_variable(shape=[1],name="n",initializer=tf.constant_initializer[1])

可以看出,tf.Variable()和tf.get_variable()创建变量的过程是一样的,两者最大的区别在于指定变量名称的参数不同。

tf.Variable()函数中,变量名称是可选参数;

tf.get_variable()函数中,变量名是必选参数,当变量名存在时,将直接获取变量。

tf.get_variable()函数的语法格式如表

函数说明

tf.get_variable(

name,

shape,

initializer

)

用来初始化或获取变量

name:变量的名称,必填

shape:变量的形状,必填

initializer:变量初始化的方法,选填

tf.get_variable()函数拥有一个变量检查机制,会检测已经存在的变量是否设置为共享变量。

如果未设置为共享变量,Tensorflow运行到第二个拥有相同名字变量的时候,就会抛出异常错误。

共享变量

tf.variable_scope()函数用来指定变量的作用域。

不同作用域中的变量可以有相同的命名,包括使用tf.get_variable()函数得到的变量以及tf.Variable()函数创建的变量。

tf.get_variable()常常会配合tf.variable_scope()一起使用,以实现变量共享。tf.variable_scope()函数会生成上下文管理器,并指定变量的作用域。

tf.variable_scope()里还有一个reuse = True 属性,表示使用已经定义过的变量,这时tf.get_variable()不会创建新的变量,而是直接获取已经创建好的变量。如果变量不存在,则会报错。

下面代码使用了变量共享的功能:

import tensorflow as tf
with tf.variable_scope("V1"):a1 = tf.get_variable(name = 'a1',shape = [1],initializer = tf.constant_initializer(1))
with tf.variable_scope("V2"):a2 = tf.get_variable(name = 'a1',shape = [1],initializer = tf.constant_initializer(1))
with tf.variable_scope("V2",reuse = True):a3 = tf.get_variable('a1')
with tf.Session() as sess:sess.run(tf.global_variables_initializer())print(a1.name)print(a2.name)print(a3.name)

2-3行代码:在V1变量空间中定义变量a1

4-5行代码:在V2变量空间中定义变量a1。由于两个a1位于不同的变量空间,所以不会产生冲突

6-7行代码:重用V2命名空间的a1变量。调用tf.get_variable()时,会获取V2命名空间的a1变量的值

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/534299.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c++用牛顿法开多次根_望远镜的历史之三:大神出世,改变望远镜历史的竟然是牛顿...

上次我们说到格里高利望远镜有点画蛇添足,那么格里高利望远镜添了什么呢?格里高利望远镜格里高利望远镜观测的图像都是正立的,这就意味着要采用多个凹面反射镜,而当时凹面反射镜磨制不易,无论是多大的科学家都要亲自动…

如何把照片正面变成反面_各国签证照片要求大全 (含模板)

对于不是很熟悉签证的小伙伴来说,面对全球那么多国家的签证而且每张签证照片的规格不同为此我们为您整理了各国签证照片要求大全 东南亚国家的签证照要求基本相同,就以泰国为例,告诉大家签证照的注意事项。“泰国,新加坡&#xff…

TensorFlow实验(3)

模型的保存与恢复 我们来简单实现一下模型的保存与恢复 训练完TensorFlow模型后,可将其保存为文件,以便于预测新数据时直接加载使用。 TensorFlow模型主要包含网络的设计或者图以及已经训练好的网络参数的值。 TensorFlow提供的tf.train.Saver()函数…

ad域 禁用账号_IST-AD域信息同步平台来袭

IST的AD域信息同步系统是能帮助域管理员简化日常的一些管理工作,可以让AD域系统与其他的业务系统进行用户信息同步,实现自动的新旧用户帐户信息的同步修改、组织架构同步调整,并有简单易操作的配置页面系统与操作日志查询等。通过ODBC、Web S…

Linux基础(firewalld防火墙配置管理工具的图形用户界面)

firewall-config的界面如图所示 我们先将当前区域中请求http服务的流量设置为允许,但仅限当前生效。具体配置如图 尝试添加一条防火墙策略规则,使其放行访问8080-8088端口(TCP协议)的流量,并将其设置为永久生效&#x…

Linux基础(使用ssh服务管理远程主机1)

配置网络参数 使用nmtui命令配置网络参数,以及通过nmcli命令查看网络信息并管理网络会话服务。 执行nmtui命令运行网络配置工具 进入主界面 选中编辑连接并按下回车键 选中要编辑的网卡名称,然后按下Edit(编辑)按钮 把网络IPv4 …

联想g510升级方案_联想智慧中国行,聚焦第一古城,助力企业智能升级

12月29日,联想智慧中国行“一起联想 生态绽放”One Lenovo融合品鉴会邢台站盛大启幕,现场近70位河北合作伙伴到场参会,共同探讨智能时代带来的多重挑战和迎战机遇。“联想智慧中国行”是联想致力于推动中国行业智能化升级举办的系列活动&…

软件工程(总体设计②设计原理)

设计原理 模块化 模块是由边界元素限定的相邻程序元素的序列,而且有一个总体标识符代表它。 按照模块的定义,过程、函数、子程序和宏,都可作为模块。 面向对象方法学中的对象是模块,对象内的方法也是模块。模块是构成程序的基…

TensorFlow构建二维数据拟合模型(3)

占位符与数据喂入机制 placeholder是TensorFlow提供的占位符节点,由tf.placeholder()函数创建,其实质上也是一种变量。占位符没有初始值,只会分配必要的内存,其值由会话中用户调用的run()函数传递。 占位符声明的方法如表 函数…

合作开发过程产生的专利_被起诉专利侵权怎么办?专利律师给你出招!

随着国内企业专利申请量的增加及专利保护意识的逐步提升,专利侵权诉讼作为常用的商业竞争手段和策略,其数量也随之呈逐年递增之势。考虑到目前国内专利数量较多,且很多专利技术互有交叉,因此在进行产品研发时即使未借鉴他人产品&a…

idea怎么设置代码提示不区分大小写_IntelliJ IDEA 这样设置动图,棒极了!

转自:IntelliJ-IDEA-Tutorial/Judas.n链接:http://suo.im/6sHdelIntelliJ IDEA 有很多人性化的设置我们必须单独拿出来讲解,也因为这些人性化的设置让我们这些 IntelliJ IDEA 死忠粉更加死心塌地使用它和分享它。推荐设置IntelliJ IDEA 的代码…

表字段顺序有何影响_「品味保定」炸烹虾段乾隆赞 百年保定柔雅香

【引文】上溯先贤尧帝,保定传承已逾千载。燕赵之地、畿辅之疆、北控三关、南通九省、翅卫京师说的就是古城保定。千百年来,古城保定形成了独具特色的饮食文化,精致气派的直隶官府菜就是这种文化的结晶。品百年保定酒,尝直隶官府菜…

testufo测试刷新率测试_上手体验微星电竞显示器PAG301CR:200Hz高刷新率只是它的小亮点...

电子竞技行业高速发展,逐渐成为体育产业版图中重要的一块,产业链也在不断完善,人们对于电子竞技的认识也是越来越深刻,同时越来越多的人加入了电子竞技行列中,但是电竞游戏除了水平外,设备同样也尤其重要,特…

graphpad做折线图坐标轴数字_pandas做数据可视化具体操作,快来看看吧

来自公众号:大邓和他的Python常见的数据可视化库有:matplotlib 是最常见的2维库,可以算作可视化的必备技能库,由于matplotlib是比较底层的库,api很多,代码学起来不太容易。seaborn 是建构于matplotlib基础上&#xff0…

实现输入提示 layui_ASP.NET Core SignalR :学习消息通讯,实现一个消息通知

什么是 SignalR目前我用业余时间正在做一个博客系统,其中有个功能就是评论通知,就是假如A用户评论B用户的时候,如果B用户首页处于打开状态,那么就会提示B用户有未读消息。暂时用SignalR来实现这个功能。我也是看了两天的资料才明白…

两个字和三个字一样宽_武汉国庆出行 记好三个字

武汉国庆出行国庆黄金周带你一起见证奇迹乐在武汉国庆去哪儿玩?记住:三 个 字欢乐谷记住【欢乐谷】三个字,你就不会迷路!不算白来。欢乐谷有啥好?免费!国庆期间,欢乐谷面向全国人民免费开放&…

什么标签用于在表单中构建复选框_UI/UX笔记之如何设计好表单

原文链接:UI/UX笔记之如何设计好表单 | 须臾所学免费设计资源网​presentationvip.com无论是注册流程,多视图步骤程序还是单调的数据输入界面,表单都是数字产品设计中最重要的组成部分之一。本文重点介绍表单设计的常见事项。请记住&#xff…

mqtt 发送消息过多_阿里云MQTT服务端注解式消息处理分发与同步调用实践小结

一、前言前段时间公司预研了设备app端与服务端的交互方案,出于多方面考量最终选用了阿里云的微服务队列MQTT方案,基于此方案,本人主要实践有:1. 封装了RocketMQ实现MQTT订阅与发布的实现细节;2. 实现了注解式分发处理&…

css引入矢量图标_WEB 项目开发中的图标管理解决方案

相信很多前端开发人员在项目开发过程中都会遇到这样一个问题:页面的图标发生改动,需要往图标文件中追加新的图标,却因为图标文件已经打包好而无从下手,重新制作一份图标文件吧,要考虑替换整个项目的图标,工…

判断按键值_Pygame(九)按键事件(2)

Pygame(九)按键事件(2)前情提要前情提要作业解析完整代码# /usr/bin/python3# Author: 爱编程的章老师# Time: 2021/1/7 0007# E-mail: Bluesand2010163.comimport pygame, sys, timefrom random import randintdef homework():作业 挡板接球 一个宽100 ,高10的棕色挡板,…