AI学习之路(8): 定义张量变量
2017-02-24 17:39
239 查看
在前面,我们已经学习到生成训练数据,接着下来就要开始进行训练TF的神经网络了。但是我们从TensorFlow的名称就知道要使用张量来表示数据结构,并且让张量沿着不同的边进行流动,才可以产生神经元出来,也就是权重值。直接使用Python的数据结构可行吗?肯定不行,否则就不会创建张量这个单词出来了。因为张量是一维到多维的向量,它的维度可能很高,达到数万个维度,远远超过目前人类所能理解的维数。因此在TF里创建了一个张量的数据类型,我们要使用这个数据类型才可能与TF进行沟通,否则就像我们跟老外说中文,他们怎么可能听得懂呢,所以在进行训练之前,要先学习与TF沟通的语言,否则就是临渊羡鱼,不如我们退而结网吧。
好吧,先来看看张量的数据类型构造函数:
tf.Variable.__init__(initial_value=None, trainable=True, collections=None, validate_shape=True, caching_device=None, name=None, variable_def=None, dtype=None, expected_shape=None, import_scope=None)
从这个构造函数里,就知道tf.Variable是一个变量类,它可以用来声明张量对象。它的输入参数是比较多,但很多都是可以使用默认参数即可。这个类主要用初始化值initial_value来构造一个张量变量,新声明的变量主要添加到图集合里,默认是添加到图集合[GraphKeys.GLOBAL_VARIABLES],如果trainable=True为真时,同时添加到图集合GraphKeys.TRAINABLE_VARIABLES。其实这个构造函数主要创建了两个操作:一个是生成变量的操作,一个是设置初始值的操作。
参数:
initial_value:
张量或者可转换为张量的Python数据类型对象,设置新张量的初始值。除了validate_shape设置为False时不需要指定张量的行列形式,其它情况下必须指定张量的行列形式。也可以使用不带初始值的方式来创建变量,但必须指明dtype的类型,也就是将要保存数据的类型。
trainable:
设置为True时添加这个变量到图集合GraphKeys.TRAINABLE_VARIABLES.这是很多优化器类使用的默认变量列表。
collections:
变量将要添加到的图集合名称。默认是[GraphKeys.GLOBAL_VARIABLES].
validate_shape:
如果设置为False允许变量不指明行列形状;如果设置为True必须指明行列形状。
caching_device:
可选的缓存设备字符串,默认是变量设备,如果非空设置为另一个设备。主要用来优化变量拷贝时的操作。
name:
可选的变量名称,默认是系统自动创建唯一的名称。
variable_def:
VariableDef定义协议缓冲区格式。
dtype:
设置变量的保存的数据类型。默认从初始值获取,如果没有初始化需要指定。
expected_shape:
预期的行列形式。如果设置这个就会判断初始化是否符合这个行列形式。
import_scope:
可选的命名空间字符串。
异常:
ValueError: 如果variable_def和initial_value同时指定时发生。
ValueError: 如果没有初始化值,并且没有设置validate_shape为True时发生。
已经理解这个类型的定义了,接着下来实际操作一下吧。
#python 3.5.3 蔡军生
#http://edu.csdn.net/course/detail/2592
#
import tensorflow as tf
#创建张量变量
W = tf.Variable([1,2,3], name='W')
print(W)
#显示它的值
init_op = tf.global_variables_initializer()
with tf.Session() as sess:
sess.run(init_op)
print(W.eval())运行这段代码,输出结果如下:
====================== RESTART: D:/AI/sample/tf_1.16.py ======================
Tensor("W/read:0", shape=(3,), dtype=int32)
[1 2 3]
>>>
在这个例子里,通过Python的数据结构列表[1,2,3]来创建一个张量的变量,同时把它的名称改为“W”,可见后面打印出来时,看到叫做W的名称了。接着把张量结构显示出来,后面代码主要通过TF计算之后,再把结果显示出来。
到这里,终于学会张量变量的定义,就已经踏入与TF交流的第一步了。
1. C++标准模板库从入门到精通
http://edu.csdn.net/course/detail/33242.跟老菜鸟学C++
http://edu.csdn.net/course/detail/29018.在VC2015里学会使用MySQL数据库
http://edu.csdn.net/course/detail/2672
好吧,先来看看张量的数据类型构造函数:
tf.Variable.__init__(initial_value=None, trainable=True, collections=None, validate_shape=True, caching_device=None, name=None, variable_def=None, dtype=None, expected_shape=None, import_scope=None)
从这个构造函数里,就知道tf.Variable是一个变量类,它可以用来声明张量对象。它的输入参数是比较多,但很多都是可以使用默认参数即可。这个类主要用初始化值initial_value来构造一个张量变量,新声明的变量主要添加到图集合里,默认是添加到图集合[GraphKeys.GLOBAL_VARIABLES],如果trainable=True为真时,同时添加到图集合GraphKeys.TRAINABLE_VARIABLES。其实这个构造函数主要创建了两个操作:一个是生成变量的操作,一个是设置初始值的操作。
参数:
initial_value:
张量或者可转换为张量的Python数据类型对象,设置新张量的初始值。除了validate_shape设置为False时不需要指定张量的行列形式,其它情况下必须指定张量的行列形式。也可以使用不带初始值的方式来创建变量,但必须指明dtype的类型,也就是将要保存数据的类型。
trainable:
设置为True时添加这个变量到图集合GraphKeys.TRAINABLE_VARIABLES.这是很多优化器类使用的默认变量列表。
collections:
变量将要添加到的图集合名称。默认是[GraphKeys.GLOBAL_VARIABLES].
validate_shape:
如果设置为False允许变量不指明行列形状;如果设置为True必须指明行列形状。
caching_device:
可选的缓存设备字符串,默认是变量设备,如果非空设置为另一个设备。主要用来优化变量拷贝时的操作。
name:
可选的变量名称,默认是系统自动创建唯一的名称。
variable_def:
VariableDef定义协议缓冲区格式。
dtype:
设置变量的保存的数据类型。默认从初始值获取,如果没有初始化需要指定。
expected_shape:
预期的行列形式。如果设置这个就会判断初始化是否符合这个行列形式。
import_scope:
可选的命名空间字符串。
异常:
ValueError: 如果variable_def和initial_value同时指定时发生。
ValueError: 如果没有初始化值,并且没有设置validate_shape为True时发生。
已经理解这个类型的定义了,接着下来实际操作一下吧。
#python 3.5.3 蔡军生
#http://edu.csdn.net/course/detail/2592
#
import tensorflow as tf
#创建张量变量
W = tf.Variable([1,2,3], name='W')
print(W)
#显示它的值
init_op = tf.global_variables_initializer()
with tf.Session() as sess:
sess.run(init_op)
print(W.eval())运行这段代码,输出结果如下:
====================== RESTART: D:/AI/sample/tf_1.16.py ======================
Tensor("W/read:0", shape=(3,), dtype=int32)
[1 2 3]
>>>
在这个例子里,通过Python的数据结构列表[1,2,3]来创建一个张量的变量,同时把它的名称改为“W”,可见后面打印出来时,看到叫做W的名称了。接着把张量结构显示出来,后面代码主要通过TF计算之后,再把结果显示出来。
到这里,终于学会张量变量的定义,就已经踏入与TF交流的第一步了。
1. C++标准模板库从入门到精通
http://edu.csdn.net/course/detail/33242.跟老菜鸟学C++
http://edu.csdn.net/course/detail/29013. 跟老菜鸟学python
http://edu.csdn.net/course/detail/25924. 在VC2015里学会使用tinyxml库
http://edu.csdn.net/course/detail/25905. 在Windows下SVN的版本管理与实战
http://edu.csdn.net/course/detail/2579
6.Visual Studio 2015开发C++程序的基本使用
http://edu.csdn.net/course/detail/2570
7.在VC2015里使用protobuf协议
http://edu.csdn.net/course/detail/25828.在VC2015里学会使用MySQL数据库
http://edu.csdn.net/course/detail/2672
相关文章推荐
- spring源码学习之路---IOC容器初始化要义之bean定义载入(五)
- AI学习之路(5): NumPy是什么
- spring源码学习之路---IOC容器初始化要义之bean定义载入(五)
- AI 学习之路——轻松初探 Python 篇(二)
- 1>test.obj : error LNK2005: _main 已经在 main.obj 中定义【c的学习之路】
- 汇编学习之路(二)标号后定义数据产生错误
- spring源码学习之路---IOC容器初始化要义之bean定义载入
- Pascal学习之路1——变量常量定义
- spring源码学习之路---IOC容器初始化要义之bean定义载入(五)
- spring源码学习之路---IOC容器初始化要义之bean定义载入(五)
- AI学习之路(19)TensorFlow里的矩阵乘法
- AI 学习之路——轻松初探 Python 篇(三)
- AI学习之路(6): NumPy的使用
- 【总结】深度学习打造精准推荐系统,细说国美互联网AI发展的进击之路
- LinkedIn高级工程经理、AI负责人龙波:深度学习和宽度学习,我的学习探索之路
- AI学习之路(3): 牛刀小试之线性回归
- spring源码学习之路---IOC容器初始化要义之bean定义载入(四)
- AI 学习之路
- JS正则表达式学习之路:(一)正则表达式的定义
- Objective C 学习之路2 类的定义和实现