版权声明:流浪者 https://blog.csdn.net/gz153016/article/details/82821278
TensorFlow案例一
使用已经介绍的相关TensorFlow相关知识点,实现一下三个功能(变量更新)
1.实现一个累加器,并且每一步均输入累加器的结果值。
2.编写一段代码,实现动态的更新新变量的维度数目
3.实现一个求阶乘的代码。
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
import tensorflow as tf
'''
# # 需求一:
# # 1.定义一个变量
x = tf.Variable(1,dtype=tf.int32,name='v_x')
# # 2.变量的更新
assign_op = tf.assign(ref=x,value=x+1)
# # 3.变量的初始化操作
x_init_op = tf.global_variables_initializer()
# # 4.运行
# 运行assign_op = tf.global_variables_initializer()
with tf.Session(config=tf.ConfigProto(log_device_placement=True,allow_soft_placement=True)) as sess:
# # 变量的初始化
sess.run(x_init_op)
# 模拟迭代更新累加器
for i in range(5):
#执行更新操作
sess.run(assign_op)
r_x = sess.run(x)
print(r_x)
# # 需求二
# # 1.定义一个不定形状的变量
x = tf.Variable(
initial_value=[],# 给定一个空值
dtype=tf.float32,
trainable=False,
validate_shape=False#设置为True,表示在变量更新的时候,进行shape检查,默认为true
)
# # 2.变量更改
concat = tf.concat([x,[0.0,0.0]],axis=0)
assign_op = tf.assign(x,concat,validate_shape=False)
# # 3.变量的初始化操作
x_init_op =tf.global_variables_initializer()
# # 3.运行
with tf.Session(config=tf.ConfigProto(log_device_placement=True,allow_soft_placement=True)) as sess:
#变量的初始化
sess.run(x_init_op)
#模拟迭代更新累加器
for i in range(5):
#执行更新操作
sess.run(assign_op)
r_x = sess.run(x)
print(r_x)
'''
# 需求三
# 1.定义一个变量
sum = tf.Variable(1,dtype=tf.int32)
# 2.第一定义一个占位符
i = tf.placeholder(dtype=tf.int32)
# 3.更新操作
tmp_sum = sum*i
#temp_sum = tf.multiply(sum,i)
assign_op = tf.assign(sum,tmp_sum)
with tf.control_dependencies([assign_op]):
#如果需要执行这个代码块中的内容,必须先执行control_dependencies中给定的操作/tensor
sum = tf.Print(sum,data=[sum,sum.read_value()],message='sum:')
#4.变量初始化操作
x_init_op = tf.global_variables_initializer()
#5.运行
with tf.Session(config=tf.ConfigProto(log_device_placement=True,allow_soft_placement=True)) as sess:
# 变量初始化
sess.run(x_init_op)
#模拟迭代更新操作
for j in range(1,6):
#执行更新操作
sess.run(assign_op,feed_dict={i:j})
#通过control_dependencies可以指定以来关系,这样的话,就不用管内部的更新操作了
r = sess.run(sum,feed_dict={i:j})
print("5!={}")