目录
全程可视化:tensorboard的使用
关于学习任何一门编程,我的建议是:直接动手干,不要花时间系统去学!一边实践一边学习,进步才最快。等有1~2个项目的实践经历后,再回头系统学习,读一些系统的书籍,事半功倍。现在直接系统地学,很多部分你也看不懂。
前期准备
首先请保证你已经安装了python的开发环境和TensorFlow。
如果还没有的话,请看:傻瓜教程:MacOS系统安装Anaconda+Spyder+TensorFlow
最好,你还能初步了解一些TensorFlow的基本内容:TensorFlow:编程模型和重要基本概念,然后我们就可以开始实战了。
实例:训练一元方程
我们举个例子,我们要让一堆随机的初始数据经过TensorFlow框架下的学习训练后,输出y=0.1x+0.3。
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
#w和b的初始值
Weights = tf.Variable(tf.random_uniform([1],-1.0,1.0))
biases = tf.Variable(tf.zeros([1]))
y = Weights*x_data + biases
loss = tf.reduce_mean(tf.square(y-y_data))
#建立优化器
optimizer = tf.train.GradientDescentOptimizer(0.5) #学习率,小于1的数,这里取0.5
train = optimizer.minimize(loss) #这里定义了train的算式,即要做什么:使得loss最小!
#初始化我们的变量 使我们设计的学习结构活动起来
init = tf.initialize_all_variables()
sess = tf.Session() #创建一个session
sess.run(init)
for step in range(201): #迭代201次
sess.run(train)
if step % 20 == 0: #每隔20次输出一次信息
print(step,sess.run(Weights),sess.run(biases))
上面程序输出是:
发现输出非常接近0.1和0.3了。
当然,因为你还没有系统地学习TensorFlow,目前你不需要深入理解如优化器、初始化等一系列操作的底层原理,你只需要知道它是用来干什么的、能产生什么样的结果,会使用就可以。具体的我们会在之后学习过程中细讲。
上面程序中出现的一些你必须要知道的TensorFlow框架下的知识点:
Session
TensorFlow中的对话模块,or人机会话接口,执行已经创建好的计算图或某些部分。一般很多tf框架下语句都要run一下才可以生效。
例如:计算两个矩阵相乘:
import tensorflow as tf
matrix1 = tf.constant([[3, 3]])
matrix2 = tf.constant([[2],
[2]])
product = tf.matmul(matrix1, matrix2) # matrix multiply np.dot(m1, m2)
# method 1
sess = tf.Session() #创建session
result = sess.run(product) #通过session来运行部分图
print(result)
sess.close() #关闭会话
# method 2
with tf.Session() as sess: #通过with 自动关闭这次会话 降低内存占用
result2 = sess.run(product)
print(result2)
Variable
通过tf.Variable定义TensorFlow框架下的变量。
举个例子:
import tensorflow as tf
state = tf.Variable(0, name='counter')
#print(state.name)
one = tf.constant(1)
new_value = tf.add(state, one) #变量加常量1
update = tf.assign(state, new_value) #把new_value赋给state
init =