我的tensorflow学习笔记(1)

主要参考:stanfordCS20 ;tensorflow官方文档

一、graph和session

    tensorflow将运算的定义与执行分开,采用graph(图)来表示计算任务,在session(会话)中执行图中定义的操作。

二、tensor

    tensorflow中使用tensor(张量)来表示数据。所谓的tensor,就是n维数组。

    0-d:scalar,数字;1-d:vector;2-d:matrix

三、获取运算结果

    定义了一系列操作后,并不能直接获取想要的值,必须启动session。session封装了一个执行操作,给张量赋值的环境,同时给现在的变量分配内存。在Python中,启动session通常有两种方法:

第一种方法:

sess=tf.Session() 
print(sess.run(a))
sess.close()

第二种方法:

with tf.Session() as sess:
  print(sess.run(a))

    session会给graph赋值,计算所有指向a的节点,找到a的值。因此如果此前定义了无关变量,则在这个session中不参加运算。

四、分布计算

    将一个图分成多个子图,在不同的GPU/CPU上计算是可行的。指定运算单元的方法如下:

# Creates a graph.
with tf.device('/gpu:2'):
  a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], name='a')
  b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], name='b')
  c = tf.multiply(a, b)

# Creates a session with log_device_placement set to True.
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))

# Runs the op.
print(sess.run(c))

  • "/cpu:0": 机器中的 CPU
  • "/gpu:0": 机器中的 GPU, 如果你有一个的话.
  • "/gpu:1": 机器中的第二个 GPU, 以此类推...

    尽量不要建立多个图,而是在一个图中建立无联系的子图。

五、为什么使用图

    1、节约计算资源。只计算需要的子图。

    2、将计算分为小的、可微分的片段以促进auto-differentiation(自动微分运算)

    3、使分布计算更容易实现

    4、许多机器学习模型使用图来可视化

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值