tensorflow开发 之 基础概念及常用数据类型介绍

  • Post author:
  • Post category:其他



点击查看

(人工智能)

系列文章




数据流图

简单说就是一个特定的计算逻辑或者说算法模型。

数据流图

有向图

节点

张量 – Tensor

稀疏张量 – SparseTensor

计算节点 – Operation

存储节点 – Variable

数据节点 – Placeholder



Session(会话)

简单说就是使用实际数据和模型进行运算,使用步骤包括定义,执行和关闭三步,语法如下所示:

# 定义
sess = tf.Session(target=执行引擎[可选],graph=数据流图[可选],config=启动时配置[可选])
# 执行
sess.run(带操作的变量或操作本身)
# 关闭
sess.close()



Tensor(张量)

简单说就是


同一数据类型





多维数据


。我们生活在3维世界中,高于3维的数据现实中比较难现象,以常用的0-3维数据为例说明如下表所示,其中有两个特点:

  1. 同一数据类型(方便计算)
  2. 多维数组
数组维数 名称 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 版权协议,转载请附上原文出处链接和本声明。