TensorFlow入门

计算模型--计算图

TensorFlow用计算图来描述计算,我们可以用tensorboard将计算图可视化。

1. 新建graph.py


import os
os.environ['TF_CPP_MIN_LOG_LEVEL']='2'
import tensorflow as tf

# 定义常量a,b 命名为value_a和value_b;定义乘操作c 命名为maltiply_c;定义加操作d,e 命名为add_d和add_e
a = tf.constant(5,name='value_a')
b = tf.constant(3,name='value_b')
c = tf.multiply(a,b,name='maltiply_c')
d = tf.add(a,b,name='add_d')
e = tf.add(d,c,name='add_e')
sess=tf.Session()
sess.run(e)

# 将计算图写入events文件里面,tensorboard可以从events文件里面读取数据并显示在web页面上
writer=tf.summary.FileWriter('/graphs',sess.graph)
writer.flush()
writer.close()
sess.close()

2. 运行之后在项目graphs目录会生成一个events文件。

1487780-20190912163856797-508121545.png

3. 命令行cd到graphs目录

tensorboard --logdir=./graphs --host=127.0.0.1 --port=8080,启动tensorboard

1487780-20190912164119830-761725715.png

4. 打开浏览器访问http://127.0.0.1:8080

1487780-20190912164201784-924243322.png

  • 每个节点都是一个运算,每一条边代表计算之间的依赖关系。如果一个运算的输入依赖于另一个运算的输出它们就具有依赖关系。

  • 这个运算图中value_avalue_b两个常量不依赖于任何其他计算。

  • 运算add_dmaltiply_c的输入则要依赖value_avalue_b两个变量。

  • 运算add_e的输入也要依赖add_dmaltiply_c的输出。

tensorboard启动报错

如果tensorboard --logdir=./graphs --host=127.0.0.1 --port=8080启动报错

ImportError: Something is wrong with the numpy installation. While importing we detected an older version of numpy in ['f:\anaconda\anaconda\lib\site-packages\numpy']. One method of fixing this is to repeatedly uninstall numpy until none is found, then reinstall this version.

1. pip uninstall numpy删除numpy

2. 重复1操作直到提示未安装

1487780-20190912164655890-867455378.png

3. pip install numpy

4. 重新运行即可

数据模型--张量

TensorFlow的所有数据的数据都是通过张量(tensor)来表示,张量也可以表示为多维数组。

  • 零阶张量表示为标量也就是第一个数,第一阶张量为向量也就是一个一维数组,第n阶张量可以理解为一个n维数组。

  • 张量在tensorflow中的实现并不是直接采用数组的形式,只是对运算结果的引用。并不真正保存数字而是保存如何得到这些数字的计算过程。


import os
os.environ['TF_CPP_MIN_LOG_LEVEL']='2'
import tensorflow as tf

a = tf.constant([1.0,2.0],name='value_a')
b = tf.constant([2.0,3.0],name='value_b')
result = tf.add(a,b, name='add')
print(result)

1487780-20190912165615297-584352811.png

我们可以看到张量的三个重要的属性:

1. 名字(name),为张量的唯一标识符,同时也表示张量是如何计算出来的如上面的add:0就表示result这个张量是计算节点add输出的第一个结果

2. 维度(shape)描述了一个张量的维度信息,shape=(2,)表示张量result是一个一维数组,且数组的长度为2

3. 类型(dtype),每个张量都会有唯一的类型,参与运算的张量的类型要相互匹配,要不然会报错

如果我们添加一个类型不一样的张量,进行add运算则会报错。


c = tf.constant(4,name='value_c')
result2 = tf.add(b,c, name='add2')
print(result2)

1487780-20190912165911457-189781396.png

运行模型--会话

TensorFlow用会话来管理运行时的所有资源


# 创建一个会话
sess=tf.Session()
# 创建一个会话
sess.run(...)
# 关闭会话释放资源
sess.close()
  • 如果程序因为异常退出时,不会执行close函数,所以会话资源就得不到释放。所以通过python上下文来管理会话,避免出现这种情况。

with tf.Session() as sess
   
    sess.run(...) 
    
    # 则无需close

转载于:https://www.cnblogs.com/chenjy1225/p/11512692.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值