【TF笔记】之Tensorflow实现几个小案例

使用TensorFlow完成下面几个小功能,熟悉基本用法:

  • 1. 实现一个累加器,并且每一步均输出累加器的结果值。
import tensorflow as tf

# 定义一个变量
x = tf.Variable(1, dtype=tf.int32, name='x')

# 更新变量
assign_op = tf.assign(ref=x, value=x+1)
'''
tf.assign():
ARGS:
ref:一个可变的张量.应该来自变量节点.节点可能未初始化.
value:张量.必须具有与 ref 相同的类型.是要分配给变量的值.
validate_shape:一个可选的 bool.默认为 True.如果为 true, 则操作将验证 "value" 的形状是否与分配给的张量的形状相匹配;如果为 false, "ref" 将对 "值" 的形状进行引用.
use_locking:一个可选的 bool.默认为 True.如果为 True, 则分配将受锁保护;否则, 该行为是未定义的, 但可能会显示较少的争用.
name:操作的名称(可选).
返回:
一个在赋值完成后将保留 "ref" 的新值的张量.
'''

# 变量的初始化操作
init_op = tf.global_variables_initializer()

# 启动会话
with tf.Session() as sess:
    # 变量初始化
    sess.run(init_op)
    
    # 模拟迭代更新累加器
    for i in range(5):
        # 执行更新操作
        sess.run(assign_op)
        print("x:{}".format(sess.run(x)))

输出:

  • 2. 编写一段代码,实现动态的更新变量的维度数目
import tensorflow as tf

# 定义一个不定形状的变量
x = tf.Variable(
        initial_value=[], # 给定一个空值
        dtype=tf.int32,
        trainable=False, #表示不加载到内存空间,单独维护这个变量,一般情况下为True
        validate_shape=False) # # 设置为True,表示在变量更新的时候,进行shape的检查,默认为True

# 变量的更改
concat = tf.concat([x, [0, 0]], axis=0) #主要用于连接两个数组,values:需要连接的数组,axis:从哪个维度来连接数组
assign_op = tf.assign(x, concat, validate_shape=False)

# 变量的初始化操作
init_op = tf.global_variables_initializer()

# 启动会话
with tf.Session() as sess:
    # 变量初始化
    sess.run(init_op)
    
    # 动态更新变量维度
    for i in range(5):
        sess.run(assign_op)
        print("x:{}".format(sess.run(x)))

输出:

  • 3. 实现一个求解阶乘的代码
import tensorflow as tf

# 定义一个变量
sum = tf.Variable(1, dtype=tf.int32)

# 定义一个占位符
i = tf.placeholder(dtype=tf.int32)

# 更新操作
tmp_sum = sum * i
assign_op = tf.assign(sum, tmp_sum, name='factorial')

# 变量初始化操作
init_op = tf.global_variables_initializer()

# 启动会话
with tf.Session() as sess:
    # 初始化变量
    sess.run(init_op)
    
    # 迭代求阶乘
    for j in range(2,6):
        sess.run(assign_op, feed_dict={i: j})
    print("5!={}".format(sess.run(sum)))

输出:

总结:

  • 使用图(graph)来表示计算任务;
  • 在会话(session)的上下文中执行图;
  • 使用tensor表示数据;
  • 通过变量(Variable)来维护状态 ;
  • 使用feed和fetch可以为任意的操作(Operation/op)赋值或者从其中获取数据。

以上五点就是TensorFlow的最基本概念:在TensorFlow框架下进行编程时,一定要有数据流图的概念,我们是在利用张量(Tensor)或者变量,通过数据流(data flow)的方式通过每个节点(nodes),在通过每个节点时进行一次操作(Operation),不同节点间相互联系构成一张我们想要计算图(Graph),类似网状的计算框架;最后通过构建会话(Session),来执行我们构建的图中节点,得到我们想要的结果。个人想法,不对请指正!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值