数据流图
简单说就是一个特定的计算逻辑或者说算法模型。
Session(会话)
简单说就是使用实际数据和模型进行运算,使用步骤包括定义,执行和关闭三步,语法如下所示:
# 定义
sess = tf.Session(target=执行引擎[可选],graph=数据流图[可选],config=启动时配置[可选])
# 执行
sess.run(带操作的变量或操作本身)
# 关闭
sess.close()
Tensor(张量)
简单说就是
同一数据类型
的
多维数据
。我们生活在3维世界中,高于3维的数据现实中比较难现象,以常用的0-3维数据为例说明如下表所示,其中有两个特点:
- 同一数据类型(方便计算)
- 多维数组
数组维数 | 名称 | Python示例 |
---|---|---|
0维 | 数量 | 1 |
1维 | 向量 | [1,2] |
2维 | 矩阵(数据表) | [[1,2],[3,4]] |
3维 | 数据立方 | [[[1,2],[3,4]],[[5,6],[7,8]]] |
n维 | n阶张量 | […] |
Operation(计算节点)
简单说就是函数计算,相当于通过函数对特定步骤的计算,常规的语法中的基础数学函数基本都有,常用的计算操作类型如下:
操作类型 | 函数名称 |
---|---|
算术运算 | add、multiply、mod、sqrt、sin、trace、fft、argmin |
随机运算 | random_normal、random_shuffle、random_gamma |
数组运算 | size、rank、split、reverse、cast、one_hot、quantize |
字符串运算 | substr、encode_base64、string_to_bash_bucket |
图像运算 | encode_png、resize_images、hsv_to_rgb、adjust_gamma |
逻辑控制 | identity、logical_and、equal、less、is_finite、is_nan |
数据流控制 | enqueue、dequeue、size、take_grad、apply_grad |
初始化 | zeros_initializer、random_normal_initializer、orthogonal_initializer |
神经网络 | softmax、dropout、pool、bias_add、erosion2d |
梯度裁剪 | clip_by_norm、clip_by_value、clip_by_global_norm |
Variable(存储节点)
简单说就是一种变量,生成一种常驻于内存中的特殊类型的张量,用于在数据流图计算中存储特定节点的状态。数据类型有字符串、整型、浮点型和复数类型,使用的语法为:
# 变量定义
tmpVariable = tf.Variable(initial-value=初始值,dtype=数据类型[可选],name=变量名称[可选])
# 变量赋值
tmpVariable.assign(1.0) #类似 tmpVariable = 1.0
tmpVariable.assign_add(1.0) #类似 tmpVariable += 1.0
# 使用变量
z = tf.matmul(x,y) #类似 z = x * y
实际代码示例如下:
# 变量定义示例
tmpStr = tf.Variable("hello",tf.string)
tmpInt = tf.Variable(100,tf.int16)
tmpFloat = tf.Variable(1.0,tf.float64)
tmpComplex = tf.Variable(1+2j,tf.complex64)
# 变量赋值示例
my1 = tf.Variable(initial_value=[1,2,3],dtype=tf.int16,name='one')
my2 = tf.Variable(initial_value=[2,3,4],dtype=tf.int16,name='two')
[my1,my2]
sess = tf.Session()
sess.run(tf.global_variables_initializer())
sess.run([my1,my2])
# 相当于 my1 += my2
sess.run(my1.assign_add(my2))
# 相当于 my1 = my2
sess.run(my1.assign(my2))
执行结果如下:
Placeholder(数据节点)
简单说就是可扩展变量,或者称为占位符,使用步骤为先进行定义,然后再进行赋值或称为填充数据,具体语法如下:
# 定义
tmp = tf.placeholder(dtype=数据类型,shape=维度,name=变量名称[可选])
# 赋值或填充数据
sess.run(tmp,feed_dict={tmp:赋值数据})
实际代码示例如下:
tmpHolder = tf.placeholder(dtype=tf.float64, shape=[2],name='suoxd')
sess.run(tmpHolder,feed_dict={tmpHolder:[1,2]})
执行结果如下:
欢迎关注公众号,一起学习进步。
版权声明:本文为suoxd123原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。