(五)TensorFlow框架之变量OP

系列博客链接:

(一)TensorFlow框架介绍:https://www.cnblogs.com/kongweisi/p/11038395.html

(二)TensorFlow框架之图与TensorBoard:https://www.cnblogs.com/kongweisi/p/11038517.html

(三)TensorFlow框架之会话:https://www.cnblogs.com/kongweisi/p/11038550.html

(四)TensorFlow框架之张量:https://www.cnblogs.com/kongweisi/p/11039237.html

本文概述:

  • 说明变量op的特殊作用
  • 说明变量op的trainable参数的作用
  • 应用global_variables_initializer实现变量op的初始化

1、变量

TensorFlow变量是表示程序处理的共享持久状态的最佳方法。变量通过 tf.Variable OP类以及tf.get_variable()类进行操作。

变量的特点:

  • 存储持久化
  • 可修改值
  • 可指定被训练

1.1创建变量

  • tf.Variable(initial_value=None, trainable=True, collections=None, name=None)

    • initial_value:初始化的值
    • trainable:是否被训练
    • collections:新变量将添加到列出的图的集合中collections,默认为[GraphKeys.GLOBAL_VARIABLES],如果trainable是True变量也被添加到图形集合 GraphKeys.TRAINABLE_VARIABLES
var = tf.Variable(tf.random_normal([2, 2], mean=0.0, stddev=1.0), name="var", trainable=True)

with tf.Session() as sess:
    sess.run(var)
  • 变量需要显示初始化,才能运行值
# 添加一个初始化变量的OP# 变量显示初始化init_op = tf.global_variables_initializer()

with tf.Session() as sess:
    # 运行初始化变量的OP
    sess.run(init_op)

1.2 变量OP的方法

  • new_var = assign(value)

    • 给变量赋值一个新的值
  • new_var = assign_add(delta)
var = tf.Variable(tf.random_normal([2, 2], mean=0.0, stddev=1.0), name="var", trainable=True)# 给变量赋值一个新的值var1 = var.assign([[2, 3], [4, 5]])
# 初始化变量OPinit_op = tf.global_variables_initializer()
# 给变量在原值的基础上,加上新的值va = var.assign_add([[1, 3], [4, 5]]) 

with tf.Session() as sess: 
  # 运行初始化op    sess.run(init_op)   print(sess.run(va))   print(sess.run(var))

关于变量的被训练,我会在后面的线性回归案例当中介绍

2、命名空间与共享变量

共享变量的主要用途在一些网络当中的参数共享, 由于在TensorFlow当中,只要我们定义的不同OP, 即使name参数指定一样,但实际上也并不是同一个变量。

如果想要达到重复利用变量的效果,我们就要使用tf.variable_scope()结合tf.get_variable()一起使用

2.1 定义一个相同名字的变量

var = tf.Variable(name=‘var‘, initial_value=[4], dtype=tf.float32)
var_double = tf.Variable(name=‘var‘, initial_value=[4], dtype=tf.float32)

<tf.Variable ‘var:0‘ shape=() dtype=float32_ref>
<tf.Variable ‘var_1:0‘ shape=() dtype=float32_ref>

2.2 使用tf.variable_scope()修改OP命名空间

会在OP的名字前面增加命名空间的指定名字

with tf.variable_scope("name"):
    var = tf.Variable(name=‘var‘, initial_value=[4], dtype=tf.float32)
    var_double = tf.Variable(name=‘var‘, initial_value=[4], dtype=tf.float32)

<tf.Variable ‘name/var:0‘ shape=() dtype=float32_ref>
<tf.Variable ‘name/var_1:0‘ shape=() dtype=float32_ref>

2.2 tf.get_variable共享变量

通过tf.get_variable的初始化与Variable参数一样, 但是要是实现共享需要打开 tf.variable_scope("name")中的reuse = tf.AUTO_REUSE参数

# 打开共享参数
# 或者
#  with tf.variable_scope("name") as scope:
#  在需要使用共享变量的前面定义: scope.reuse_variables()
with tf.variable_scope("name", reuse=tf.AUTO_REUSE):
    var = tf.Variable(initial_value=4.0, name="var", dtype=tf.float32)
    var_double = tf.Variable(initial_value=4.0, name="var", dtype=tf.float32)

    var1 = tf.get_variable(initializer=tf.random_normal([2, 2], mean=0.0, stddev=1.0),
                           name="var1",
                           dtype=tf.float32)
    var1_double = tf.get_variable(initializer=tf.random_normal([2, 2], mean=0.0, stddev=1.0),
                           name="var1",
                           dtype=tf.float32)

with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    print(var1)
    print(var1_double)

原文地址:https://www.cnblogs.com/kongweisi/p/11039254.html

时间: 2024-10-11 09:11:29

(五)TensorFlow框架之变量OP的相关文章

TensorFlow框架(5)之机器学习实践

1. Iris data set Iris数据集是常用的分类实验数据集,由Fisher, 1936收集整理.Iris也称鸢尾花卉数据集,是一类多重变量分析的数据集.数据集包含150个数据集,分为3类,每类50个数据,每个数据包含4个属性.可通过花萼长度,花萼宽度,花瓣长度,花瓣宽度4个属性预测鸢尾花卉属于(Setosa,Versicolour,Virginica)三个种类中的哪一类. 该数据集包含了5个属性: Sepal.Length(花萼长度),单位是cm; Sepal.Width(花萼宽度)

大数据下基于Tensorflow框架的深度学习示例教程

近几年,信息时代的快速发展产生了海量数据,诞生了无数前沿的大数据技术与应用.在当今大数据时代的产业界,商业决策日益基于数据的分析作出.当数据膨胀到一定规模时,基于机器学习对海量复杂数据的分析更能产生较好的价值,而深度学习在大数据场景下更能揭示数据内部的逻辑关系.本文就以大数据作为场景,通过自底向上的教程详述在大数据架构体系中如何应用深度学习这一技术.大数据架构中采用的是hadoop系统以及Kerberos安全认证,深度学习采用的是分布式的Tensorflow架构,hadoop解决了大数据的存储问

Tensorflow框架初尝试————搭建卷积神经网络做MNIST问题

Tensorflow是一个非常好用的deep learning框架 学完了cs231n,大概就可以写一个CNN做一下MNIST了 tensorflow具体原理可以参见它的官方文档 然后CNN的原理可以直接学习cs231n的课程. 另外这份代码本地跑得奇慢..估计用gpu会快很多. import loaddata import tensorflow as tf #生成指定大小符合标准差为0.1的正态分布的矩阵 def weight_variable(shape): initial = tf.tru

TensorFlow框架之Computational Graph详解

1. Getting Start 1.1 import TensorFlow应用程序需要引入编程架包,才能访问TensorFlow的类.方法和符号.如下所示的方法: import tensorflow as tf 2. Tensor TensorFlow用Tensor这种数据结构来表示所有的数据.可以把一个Tensor想象成一个n维的数组或列表.Tensor有一个静态的类型和动态的维数.Tensor可以在图中的节点之间流通. 2.1 秩(Rank) Tensor对象由原始数据组成的多维的数组,T

tensorflow教程:变量创建、初始化、保存和加载

变量保存到文件 import tensorflow as tf import numpy as np # Create two variables. x_data = np.float32([1,2,3,4,5,6,7,8,9,0]) weights = tf.Variable(tf.random_normal([10, 1], stddev=0.35), name="weights") biases = tf.Variable(tf.zeros([1]), name="bi

Tensorflow中的变量

从初识tf开始,变量这个名词就一直都很重要,因为深度模型往往所要获得的就是通过参数和函数对某一或某些具体事物的抽象表达.而那些未知的数据需要通过学习而获得,在学习的过程中它们不断变化着,最终收敛达到较好的表达能力,因此它们无疑是变量. 正如三位大牛所言:深度学习是一种多层表示学习方法,用简单的非线性模块构建而成,这些模块将上一层表示转化成更高层.更抽象的表示. 原文如下: Deep-learning methods are representation-learning methods with

Thinkphp 框架模板变量及模板输出

Thinkphp框架 模板操作变量输出:{:function(-)}        //执行方法并输出返回值{~function}         //执行方法不输出{@var}                 //输出Session变量{#var}                 //输出Cookie变量{&var}                 //输出配置参数 {%var}                 //输出语言变量{.var}                 //输出GET变量{

使用TensorFlow创建第变量定义和运行方式

import tensorflow as tf# 熟悉tensorflow的变量定义和运行方式v1 = tf.Variable(2) #定义变量并给变量赋值v2 = tf.Variable(48) c1 = tf.constant(16) #定义常量并赋值c2 = tf.constant(3)addv = v1 + v2 sess = tf.Session() #注意tensorflow在运行时需要创建一个session, 所有的运算需要在session中执行 tf.initialize_all

AGG代码框架以及变量剖析

1源码目录 1)examples 最大的参考价值,作者在AGG库下的example目录中,创建了很多win32的测试用例,创建使用的是VC6.0的工程,目前采用VS2005,可以轻松的进行工程的导入.初学者可以简单的使用.进入agg\examples\win32_api目录,点击example.dsw,允许进行工程的导入,就OK了.接下来会对每一个例子进行详细的应用剖析. 2)font_freetype ?? 3)font_win32_tt ?? 4)gps 多边形集合算法,后面剖析一二!! 5