一、Hello Tensorflow
打开anaconda prompt
activate tensor flow
python
>>>import tensorflow as tf
>>>hello=tf.constant('hello')
>>>s=tf.Session()
>>>print(s.run(hello))
b'hello'
此处hello为utf-8编码?打印出来前缀b,表示数据类型为bytes而非string
hello处若为数字,则是正确的。
二、TensorFlow基本介绍
TensorFlow 是一个编程系统, 使用图来表示计算任务. 图中的节点被称之为 op (operation 的缩写). 一个 op 获得 0 个或多个 Tensor, 执行计算, 产生 0 个或多个 Tensor. 每个 Tensor 是一个类型化的多维数组. 例如, 你可以将一小组图像集表示为一个四维浮点数数组, 这四个维度分别是 [batch, height, width, channels].
一个 TensorFlow 图描述了计算的过程. 为了进行计算, 图必须在 会话 里被启动. 会话 将图的 op 分发到诸如 CPU 或 GPU 之类的 设备 上, 同时提供执行 op 的方法. 这些方法执行后, 将产生的 tensor 返回. 在 Python 语言中, 返回的 tensor 是 numpy ndarray 对象。
TensorFlow 程序通常被组织成一个构建阶段和一个执行阶段. 在构建阶段, op 的执行步骤 被描述成一个图. 在执行阶段, 使用会话执行执行图中的 op.
例如, 通常在构建阶段创建一个图来表示和训练神经网络, 然后在执行阶段反复执行图中的训练 op.
三、创建一个图
import tensorflow as tf
mat1=tf.constant([[1,2,3]]) #mat1为一个1x3矩阵
mat2=tf.constant([[4],
[5],
[6]]) #mat2为一个3x1矩阵
product=tf.matmul(mat1,mat2)
tf.constant()注释:
tf.constant([1]),表示一维张量1,即数字1;
tf.constant([1,2,3]),表示元组或说列表,即常量列表[1,2,3]
tf.constant([[1,2,3]]),表示1x3矩阵[1 2 3]
注意体会双层中括号的用法
此时计算图建立完毕,现在这个图包含三个节点(op),两个constant(),一个matmul(),为了真正实现计算,必须在Session中启动这个图。
四、启动图
s=tf.Session()
print(s.run(product))
s.close()
Session 对象在使用完后需要关闭以释放资源. 除了显式调用 close 外, 也可以使用 “with” 代码块 来自动完成关闭动作
with tf.Session() as s:
print(s.run(product))
interactivesession & session:
tf.InteractiveSession():它能让你在运行图的时候,插入一些计算图,这些计算图是由某些操作(operations)构成的。这对于工作在交互式环境中的人们来说非常便利,比如使用IPython。
tf.Session():需要在启动session之前构建整个计算图,然后启动该计算图。
意思就是在我们使用tf.InteractiveSession()来构建会话的时候,我们可以先构建一个session然后再定义操作(operation),如果我们使用tf.Session()来构建会话我们需要在会话构建之前定义好全部的操作(operation)然后再构建会话。
五、Tensor 张量
rank 阶
shape 形状
type 数据类型
六、用一个简单计数器说明Variable
# 创建一个变量, 初始化为标量
state = tf.Variable(0, name="counter")
one = tf.constant(1)
new_value = tf.add(state, one)
update = tf.assign(state, new_value)
init_op = tf.global_variable_initializer
启动图, 运行 op
with tf.Session() as sess:
sess.run(init_op)
print sess.run(state)
for _ in range(3):
sess.run(update)
print sess.run(state)