TensorFlow 采用数据流图的方式进行计算: 通俗的解释就是先把相关计算画成线和节点, 线表示关系,节点是操作符或者输入输出,要求某个节点的时候,将这个节点依赖的其他节点初始化,然后进行计算,和该节点无关的节点不动。
tensor:中文解释为张量,一阶张量为标量,tensorflow表示为[1], 二阶张量为数组或者矩阵,比如图片,tensorflow表示为[[1,2],[3,4]],三阶张量,直观来说就是个长方体或者正方体这样子的了,比如多通道图像,tensorflow表示为[[[1][2][3]]],总之就是几阶就有几重括号了
使用用tensorflow分为两步:(1)构建图 (2)启动图
构建图:就是定义一些变量,常量和运算,比如
import tensorflow as tf
matrix1 = tf.constant([[3.,3.]])
matrix2 = tf.constant([[2.],[2.]])
product = tf.matmul(matrix1, matrix2)
启动图:要建立一个称为Session()会话的结构,用完还的关
sess = tf.Session()
result = sess.run(product)
print(result)
sess.close()
于是为了省事,改成了:
with 在python中称为上下文管理器,其实感觉和c++的函数差不多,退出就全部回收了除非显示输出的量
with tf.Session() as sess:
with tf.device("/cpu:0"): 设备选择 “/gpu:0”
matrix1 = tf.constant([[3.,3.]])
matrix2 = tf.constant([[2.],[2.]])
product=tf.matmul(matrix1, matrix2)
print(product)
后来觉得一个个改输入数据不好找,于是就把输入数据统一申请相对占位格式后,feed喂进去
import tensorflow as tf
input1 = tf.placeholder(tf.float32)
input2 = tf.placeholder(tf.float32)
output = tf.multiply(input1, input2)
with tf.Session() as sess:
print(sess.run([output], feed_dict = {input1:[7.], input2:[2.]}))
这是一个定义变量的方法,变量不像常量,所以要进行初始化
import tensorflow as tf
state = tf.Variable(0, )
one = tf.constant(1)
new_value = tf.add(state, one)
update = tf.assign(state, new_value)
init_op = tf.global_variables_initializer() *
with tf.Session() as sess:
sess.run(init_op) *
print(sess.run(state))
for _ in range(3):
sess.run(update)
print(sess.run(state))