AI学习之路(8): 定义张量变量

在前面,我们已经学习到生成训练数据,接着下来就要开始进行训练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++标准模板库从入门到精通 

2.跟老菜鸟学C++

3. 跟老菜鸟学python

4. 在VC2015里学会使用tinyxml库

5. 在Windows下SVN的版本管理与实战 

 http://edu.csdn.net/course/detail/2579

6.Visual Studio 2015开发C++程序的基本使用 

http://edu.csdn.net/course/detail/2570

7.在VC2015里使用protobuf协议

8.在VC2015里学会使用MySQL数据库


发布了2055 篇原创文章 · 获赞 573 · 访问量 766万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览