如何在tensorflow变量的计算图中对变量使用乘方操作

tensorflow变量接受了Python自己的原生数据类型例如Python中的布尔值类型,数值数据类型(整数浮点数)和字符串类型。单一值将转换为0维张量(标量)列表值将转换为1维张量(向量),列表套列表将被转换成2维张量(矩阵)

你可能已经注意到了Numpy和tensorflow变量有很多相似之处tensorflow变量在设计之初就希望能够与Numpy有着很好的集成效果。Numpy软件包现在已经成为数据科学的通用语言

请记得,我们的好朋友会话tf.Session.run()要求的输入对象是一个Tensor但是它的输出是一个Numpy数组。事实上茬绝大多数场合,你可以同时混合使用tensorflow变量类型和Numpy类型

张量使用可以归结为两大类。

1.第一类对中间计算结果的引用提升代码的可读性

使用张量和不使用张量的对比

#不使用张量,简洁但是可读性降低

2.第二类情况是计算图构造完成后张量可以用来获取计算结果

会话管理tensorflow变量程序运行时的所有资源,并在运行结束后释放所有的资源

会话机制类似于计算图机制:
计算图:在一开始就有一个默认的计算图存在,并且没有特别指定运算会自动加入到这个默认的计算图中
会话:会要手动创建,张量自动添加

tensorflow变量使用会话模式有两种方式

# 加入了┅个异常处理机制,确保释放资源

这才是pythonic的写法极力推荐

#运行到这个位置会自动释放sess的资源,优雅尼克

这是2.2程序的引用会话的写法多種多样,我们应用最优雅、最pythinc的代码去阐述

  • value : 一个dtype类型(如果指定了)的常量值(列表)。要注意的是若value是一个列表,那么列表的长度不能够超過形状参数指定的大小(如果指定了)如果列表长度小于指定的大小,那么多余的空间由列表的最后一个元素来填充

变量是tensorflow变量中的核心概念,创建一个类使用tf.Variable,具体格式如下:

  • initial_value一个 Tensor类型或者是能够转化为Tensor的python对象类型它是这个变量的初始值。这个初始值必须指定形状信息不然后面的参数validate_shape需要设置为False。当然也能够传入一个无参数可调用并且返回指定初始值的对象,在这种情况下dtype必须指定。
  • validate_shape :如果是False的話就允许变量能够被一个形状未知的值初始化,默认是True,表示必须知道形状
  • caching_device :可选,描述设备的字符串表示哪个设备用来为读取缓存。默认是变量的device
  • name :可选,变量的名称
  • dtype如果被设置,初始化的值就会按照这里的类型来定

1.现在让我们使用tf.Variable()创建变量,这是最简单的、最常用的变量创建方法用的最多的两个参数initial_value和name

2.除了使用tf.Variable()创建变量,还有一个孪生兄弟tf.get_variable(),他两的业务逻辑还是很不一样的使用的唯┅标识符不一样,前者使用实例名作为唯一标志后者使用name参数作为唯一标志。

具体用法可以参考这篇博客

按照习惯get开头的函数都是“查询”、“获取”的意思,但是tf.get_variable()是创建变量get取的是“创建”的意思

tensorflow变量中,程序存在变量在使用前必须初始化

4.2.3.保存和恢复变量

版权声明:本文为博主原创文章遵循 版权协议,转载请附上原文出处链接和本声明

返回输入张量的大小,注意不是 shape而是元素个数,0 维张量默认为 tf.int32 类型

 

input:张量或稀疏张量
name:可选参数,操作的名称
out_type:可选参数操作的指定非量化数字输出类型,默认是 tf.int32 类型


 

获取变量维度是一个使用频繁的操作在tensorflow变量中获取变量维度主要用到的操作有以下三种:

对上面三种操作做一下简单分析:(这三种操作先记作A、B、C

  • AB 基本一样,只鈈过前者是Tensor的属性变量后者是Tensor的函数。
  • AB 可以在任意位置使用而 C 必须在Session中使用。
  • AB 获取的是静态shape可以返回不完整的shape; C 获取的是动态嘚shape,必须是完整的shape

另外,补充从TenaorShape变量中获取具体维度数值的方法


 
下面给出全部的示例程序:

我要回帖

更多关于 tensorflow变量 的文章

 

随机推荐