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


点击查看 (人工智能) 系列文章


数据流图

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

数据流图
有向图
节点
张量 - 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]})

执行结果如下:
在这里插入图片描述


欢迎关注公众号,一起学习进步。
真相很简单

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

放羊郎

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值