深度学习(一):Tensorflow的基本介绍

在tensorflow中,把数据称为张量(tensor)
专门运算的操作叫做节点,op,只要是用tensorflow的api定义的函数都是op
整个程序的结构叫 图,graph
运行整个程序的图叫 会话(with tf.Session…),会话能运行图的结构,分配资源计算,掌握资源(变量,队列,线程)

#实现一个加法
a=tf.constant(5.0)
b=tf.constant(6.0)
print(a,b) #输出的不是数而是类型
print(tf.add(a,b))
with tf.Session() as sess: #固定写法
print(sess.run(…))

定义默认的一张图,就是给程序分配一段内存
获取当前程序的图:graph=tf.get_default_graph()

张量都有图属性,如sess.graph和op.graph
图是可以另外创建的:tf.Graph(),两个图之间互不干扰
eg: #自定义一个图,并将其设定为默认图
g=tf.Graph()
with g.as_default():
a=tf.constant(1.0)
assert a.graph is g

tensorflow分为前端:定义程序的图的结构;后端:运算图的结构

会话只能运行默认的那一个图,当你想要运行特定的一张图的时候:with tf.Session(graph=g) as sess:
牢记,sess.run(…)是启动图的关键
会话结束后需要进行资源释放即释放内存:sess.close(), 但也可以用上下文管理器: with tf.Session() as sess: sess.run(…),这样最后程序会自动释放内存

with tf.Session(config=tf.ConfigProto(log_device_placement=True)) as sess: #在括号内加入这个参数会显示程序是在哪个元件上运行

run的方法: run(fetches,feed_dic=None,graph=None) #其中fetches可以是一个列表 ,包含多个要输出的东西

tensorflow中有方法的重载,如:var=2.0,a=tf.constant(1.0) sum=a+var 这里a是张量,是op, var是float,sum的输出是op,默认转化

我们训练模型时,当需要实时提供数据去进行训练,这时用到run的另一个方法:feed_dic, 而feed_dic一般结合placeholder用,这是一个占位符,feed_dic是个字典
eg:plt=tf.placeholder(tf.float32 , [2,3] ) 这是一个op,参数为dtype,shape,name(这里没用到)
with tf.Session(…) as sess:
print(sess.run(plt , feed_dic={plt:[[1,2,3] , [4,5,6]]})) 冒号后面的有shape决定的,当然,shape也可以不固定,[None , 3],写出具体的数字的要严格要求,none部分可以随意,因为不是固定的
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_43414976/article/details/88428202
今日推荐