使用tensoflow表示以下数据流图:
import tensorflow as tf
graph=tf.Graph()
with graph.as_default():
# transformation对象
with tf.name_scope("transformation"):
# 输入
input=tf.placeholder(dtype=tf.float32,shape=[None],name="input")
# op
b=tf.reduce_prod(input,name='b_prod')
c=tf.reduce_sum(input,name='c_sum')
d=tf.add(b,c,name='d_add')
# variables对象
with tf.name_scope('Variables'):
step=tf.Variable(0,name='step',trainable=False,dtype=tf.int32)
total_output=tf.Variable(0,name='total_output',trainable=False,dtype=tf.float32)
# update对象
with tf.name_scope("update"):
update_output = total_output.assign_add(d)
update_step=step.assign_add(1)
with tf.name_scope("tf_summary"):
#均值
average=tf.div(update_output,tf.cast(update_step,tf.float32),name='average')
#汇总数据
tf.summary.scalar('output',d)
tf.summary.scalar('average',average)
tf.summary.scalar('sum of outputs',update_output)
# 全局Variable对象和op
with tf.name_scope('global_ops'):
init=tf.initialize_all_variables()
merged_summaries=tf.summary.merge_all()
sess=tf.Session(graph=graph)
writer=tf.summary.FileWriter('./improvedgraph',graph)
sess.run(init)
def run_graph(input_tensor):
feed_dict={input:input_tensor}
_,step_,summary=sess.run([d,update_step,merged_summaries],feed_dict=feed_dict)
writer.add_summary(summary,global_step=step_)
run_graph([2,8])
run_graph([3,1,3,3])
writer.flush()
writer.close()
sess.close()
结果如图