1.1 计算图的概念
计算图是tensorflow中最基本的一个概念,tensorflow中的所有计算都会被转化为计算图上的节点。
tensorflow的名字中已经说明了它的最重要的两个概念–tensor和flow。
tensor就是张量。在tensorflow里,张量可以被简单地理解为多维数组。
flow体现了它的计算模型。直观的表达了张量之间通过计算相互转化的过程。
tensorflow是一个通过计算图的形式来表述计算的编程系统。
tensorflow中的每一个计算都是计算图上的节点,而节点之间的边描述了计算之间的依赖关系。
1.2 Tensorflow数据模型–张量
零阶张量表示标量(scalar),也就是一个数;
第一阶张量为向量(vector),也是一个一位数组;
第n阶张量可以理解为一个n维数组;
这是从功能的角度上看,张量可以简单的理解为多维数组。
张量中并没有真正保存数字,它保存的是如何得到这些数字的计算过程。
张量主要保存三个属性:名字(name)、维度(shape)和类型(type)。
- 名字:是张量的唯一标识符,也给出了这个张量如何计算出来。计算图的每一个节点代表了一个计算,计算的结果就保存在张量之中,所以张量和计算图上节点所代表的计算结果是对应的。
- 维度:描述了张量的维度信息。
- 类型:每一个张量会有一个唯一的类型。
import tensorflow as tf
state = tf.Variable(0, name='counter')
print(state.name)
one = tf.constant(1)
new_value = tf.add(state, one) # 变量 + 常量 = 变量
update = tf.assign(state, new_value)
init = tf.initialize_all_variables() # must have if define variable
with tf.Session() as sess:
sess.run(init)
for _ in range(3):
sess.run(update)
print(sess.run(state))
import tensorflow as tf
import numpy as np
x_data = np.random.rand(100).astype(np.float32)
y_data = x_data * 0.1 + 0.3
Weights = tf.Variable(tf.random_uniform([1], -0.1, 0.1)) # 随机变量从 -1 到 1 的数
biases = tf.Variable(tf.zeros([1])) # 等于0的数
y = Weights * x_data + biases
loss = tf.reduce_mean(tf.square(y - y_data))
optimizer = tf.train.GradientDescentOptimizer(0.5)
train = optimizer.minimize(loss)
init = tf.initialize_all_variables() # 初始化所有变量
sess = tf.Session()
sess.run(init) # tensorflow开始被激活
for step in range(201):
sess.run(train)
if step % 20 == 0:
print(step, sess.run(Weights), sess.run(biases))
参考
https://blog.youkuaiyun.com/zw0pi8g5c1x/article/details/81008935