学习笔记 | 深度学习开发—TensorFlow实践(基本运算)

 

  1. TensorFlow运行模型—会话

Session会话拥有并管理TensorFlow程序运行时的所有资源,当所有计算完成之后需要关闭会话帮助系统回收资源。

  1. 会话模式1
sess=tf.Session()#创建会话

sess.run()#启动会话

sess.close()#关闭会话,释放资源



sess=tf.Session()

try:

sess.run()

except:

Print(“Exception”)

finally:

sess.close()

 

  1. 指定默认的会话
sess=tf.Session()#创建会话

with sess as_default():

print(result.eval())
  1. 交互环境下设置默认会话
tf.InteractiveSession使用这个函数会自动将生成的会话注册为默认会话

sess=tf.InteractiveSession()

print(result.eval())

sess.close()

 

  1. 常量与变量
    1. 常量constant

在运行过程中值不会改变的单元,在TensorFlow中无需进行初始化操作

创建语句:consrtant_name=tf.constant(value)

    1. 变量Variable

在运行过程中值会改变的单元,在TensorFlow中需进行初始化操作

Variable_name=tf.Variable(value,name)#V是大写

个别变量初始化:

init_op=name_variable.initializer()

sess.run(init_op)

所有变量初始化:

init_op=tf.global_variables_initializer()

sess.run(init_op)

 

 

 

 

  1. 变量赋值

TensorFlow中的变量定义后,一般无需人工赋值,系统会根据算法模型,训练优化过程中自动调整变量对应的数值。特殊情况下需要人工更新,可用变量赋值语句,变量更新语句:

update_op=tf.assign(variable_to_be_update,new_value)

 

import  tensorflow as tf#导入tensorflow模型
tf.reset_default_graph()#清楚默认图和不断增加的节点

#通过变量赋值输出1.2.3.……10
value=tf.Variable(0,name="value")
one=tf.constant(1)
new_value=tf.add(value,one)
update_value=tf.assign(value,new_value)
init=tf.global_variables_initializer()

with tf.Session() as sess:
    sess.run(init)
    for _ in range(10):
        sess.run(update_value)
        print(sess.run(value))

logdir='D:/pycharm project/logs'

#生成一个写日志的writer,并将当前的tensorflow计算图写入日志
writer=tf.summary.FileWriter(logdir,tf.get_default_graph())
writer.close()

 

思考:如何利用tensorflow变量赋值计算1+2+3……+10?

import  tensorflow as tf#导入tensorflow模型
tf.reset_default_graph()#清楚默认图和不断增加的节点

#通过变量赋值输出1+2+3+……10
value=tf.Variable(0,name="value")
sums=tf.Variable(0,name="sums")
one=tf.constant(1)
new_value=tf.add(value,one)
update_value = tf.assign(value, new_value)
new_sum = tf.add(sums,value)
update_sum = tf.assign(sums,new_sum)
init=tf.global_variables_initializer()

with tf.Session() as sess:
    sess.run(init)
    for _ in range(10):
        sess.run(update_value)
        sess.run(update_sum)
    print(sess.run(sums))

logdir='D:/pycharm project/logs'

#生成一个写日志的writer,并将当前的tensorflow计算图写入日志
writer=tf.summary.FileWriter(logdir,tf.get_default_graph())
writer.close()

 

  1. 占位符placeholder

TensorFlow中的Variable变量类型,在定义时需要初始化,但有些变量定义时并不知道其数值,只有当真正开始运行程序时,才有外部输入,比如训练数据时,这个时候需要占位符。tf.placeholder占位符,是tensorflow中特有的一种数据结构,类似动态变量,函数的参数,或者c语言或者python语言中格式化输出时的“%”占位符。

tf.placeholder(dtype,shape=None,name=None)

 

x=tf.placeholder(tf.float32,[2,3],name=”x”)

  1. Feed提交数据

如果构建了一个包含placeholder操作的计算图,当在session中调用run方法时,placeholder占用的变量必须通过feed_dict参数传递进去,否则报错。

import tensorflow as tf
a=tf.placeholder(tf.float32,name="a")
b=tf.placeholder(tf.float32,name="b")
c=tf.multiply(a,b,name="c")

init=tf.global_variables_initializer()
with tf.Session() as sess:
    sess.run(init)
    #通过feed_dict的参数传值,按字典格式
    result=sess.run(c,feed_dict={a:8.0,b:3.5})
    print(result)

 

多个操作可以通过一次feed完成执行。

import tensorflow as tf
a=tf.placeholder(tf.float32,name="a")
b=tf.placeholder(tf.float32,name="b")
c=tf.multiply(a,b,name="c")
d=tf.multiply(a,b,name="d")
init=tf.global_variables_initializer()
with tf.Session() as sess:
    sess.run(init)
    #通过feed_dict的参数传值,按字典格式
    result=sess.run([c,d],feed_dict={a:[8.0,2.0,3.5],b:[1.5,2.0,4.0]})
    print(result)
    #取结果中第一个
    print(result[0])
  1. feed和fetch

一次返回多个值分别赋给多个变量

import tensorflow as tf
a=tf.placeholder(tf.float32,name="a")
b=tf.placeholder(tf.float32,name="b")
c=tf.multiply(a,b,name="c")
d=tf.multiply(a,b,name="d")
init=tf.global_variables_initializer()
with tf.Session() as sess:
    sess.run(init)
    #通过feed_dict的参数传值,按字典格式
    rc,rd=sess.run([c,d],feed_dict={a:[8.0,2.0,3.5],b:[1.5,2.0,4.0]})
    print("c=",rc,"d=",rd)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值