zoukankan      html  css  js  c++  java
  • 【TF-1-1】Tensorflow实验--入门

    目录

    1. 实现一个累加器,并且每一步均输出累加器的结果值
    2. 实现动态的更新变量的维度数目
    3. 实现一个求解阶乘的代码

    使用已介绍的相关TensorFlow相关知识点,实现以下三个功能(变量更新)

    一、实现一个累加器,并且每一步均输出累加器的结果值

        1 	# 1. 定义一个变量
        2 	x = tf.Variable(1, dtype=tf.int32, name='v_x')
        3 	# 2. 变量的更新
        4 	# x = x+1  #这种操作不行
        5 	assign_op = tf.assign(ref=x, value=x + 1)#更新操作Update `ref` by assigning `value` to it.
        6 	# 3. 变量初始化操作
        7 	x_init_op = tf.global_variables_initializer()
        8 	# 3. 运行
        9 	with tf.Session(config=tf.ConfigProto(log_device_placement=True, allow_soft_placement=True)) as sess:
       10 	    sess.run(x_init_op)       # 变量初始化
       11 	    # 模拟迭代更新累加器
       12 	    for i in range(5):
       13 	        sess.run(assign_op)  # 执行更新操作
       14 	        r_x = sess.run(x)
       15 	        print(r_x)
       16 
    

      

    结果:

    二、 实现动态的更新变量的维度数目

        1 	import tensorflow as tf
        2 	# 1. 定义一个不定形状的变量
        3 	x = tf.Variable(
        4 	    initial_value=[],  # 给定一个空值
        5 	    dtype=tf.float32, trainable=False,
        6 	    validate_shape=False  # 设置为True,表示在变量更新的时候,进行shape的检查,默认为True
        7 	)
        8 	# 2. 变量更改
        9 	concat = tf.concat([x, [0.0, 0]], axis=0)
       10 	assign_op = tf.assign(x, concat, validate_shape=False)
       11 	# 3. 变量初始化操作
       12 	x_init_op = tf.global_variables_initializer()
       13 	# 3. 运行
       14 	with tf.Session(config=tf.ConfigProto(log_device_placement=True, allow_soft_placement=True)) as sess:
       15 	    sess.run(x_init_op)      # 变量初始化
       16 	    # 模拟迭代更新累加器
       17 	    for i in range(5):
       18 	        sess.run(assign_op)          # 执行更新操作
       19 	        r_x = sess.run(x)
       20 	        print(r_x)
       21 
    

      

    结果:

    三、实现一个求解阶乘的代码

        1 	# 1. 定义一个变量
        2 	sum = tf.Variable(1, dtype=tf.int32)
        3 	# 2. 定义一个占位符
        4 	i = tf.placeholder(dtype=tf.int32)
        5 	# 3. 更新操作
        6 	tmp_sum = sum * i
        7 	assign_op = tf.assign(sum, tmp_sum)
        8 	# 4. 变量初始化操作
        9 	x_init_op = tf.global_variables_initializer()
       10 	# 5. 运行
       11 	with tf.Session(config=tf.ConfigProto(log_device_placement=True, allow_soft_placement=True)) as sess:
       12 	    sess.run(x_init_op)  # 变量初始化
       13 	    # 模拟迭代更新累加器
       14 	    for j in range(1, 6):
       15 	        r = sess.run(assign_op, feed_dict={i: j})
       16 	    print("5!={}".format(r))

    结果:

    需求三的另一种写法:

        1 	# 1. 定义一个变量
        2 	sum = tf.Variable(1, dtype=tf.int32)
        3 	# 2. 定义一个占位符
        4 	i = tf.placeholder(dtype=tf.int32)
        5 	# 3. 更新操作
        6 	tmp_sum = sum * i   # 一样的效果 tmp_sum = tf.multiply(sum, i)
        7 	assign_op = tf.assign(sum, tmp_sum)
        8 	with tf.control_dependencies([assign_op]):
        9 	# 如果需要执行这个代码块中的内容,必须先执行control_dependencies中给定的操作/tensor
       10 	    sum = tf.Print(sum, data=[sum, sum.read_value()], message='sum:')
       11 	# 4. 变量初始化操作
       12 	x_init_op = tf.global_variables_initializer()
       13 	# 5. 运行
       14 	with tf.Session(config=tf.ConfigProto(log_device_placement=True, allow_soft_placement=True)) as sess:
       15 	    sess.run(x_init_op)  # 变量初始化
       16 	    # 模拟迭代更新累加器
       17 	    for j in range(1, 6):
       18 	        # 执行更新操作
       19 	        # 通过control_dependencies可以指定依赖关系,这样的话,就不用管内部的更新操作了
       20 	        r = sess.run(sum, feed_dict={i: j})
       21 	    print("5!={}".format(r))
    

      

  • 相关阅读:
    ubuntu系统下安装最新版的MySQL
    scp本地服务器和远程服务器拷贝文件
    linux设置环境变量
    PHP程序员玩转Linux系列-lnmp环境的搭建
    nginx与负载均衡
    Linux下vim的常用命令总结
    nginx与location规则
    ssh秘钥对免密码登陆
    ubuntu下安装php pdo扩展和导入数据库
    ArrayList的删除实现
  • 原文地址:https://www.cnblogs.com/yifanrensheng/p/12507819.html
Copyright © 2011-2022 走看看