TensorFlow是Google推出的深度学习框架,相信谷歌出品,必属精品。养成良好的写笔记习惯,好记性不如烂笔头(* ̄(oo) ̄)
安装&入门教程
网上一堆安装和入门教程,以下两个链接都是比较靠谱的。这里只啰嗦一句,window环境下,TensorFlow只能支持Python3.5以及以上版本!!!
中文官网:https://tensorflow.google.cn/
极客学院:http://wiki.jikexueyuan.com/project/tensorflow-zh/
生成一个最简单的前馈神经网络模型
tensorflow官方教程上有一个识别手写阿拉伯数字的例子,采用了卷积神经网络模型(一般图像处理都使用卷积神经网络)。但是对于我这个初学者来说,上来的demo是这个例子,难度略大。所以,使用一个最简单的前馈神经网络模型,作为第一个栗子。该模型主要是一个二分类模型。
代码如下:
importtensorflowastf
fromnumpy.randomimportRandomState
#定义训练数据batch的大小
batch_size=8
#生成一个2X3的随机矩阵w1,3X1的随机矩阵w2,标准差是1,随机种子1
w1=tf.Variable(tf.random_normal([2,3],stddev=1,seed=1),name="w1")
w2=tf.Variable(tf.random_normal([3,1],stddev=1,seed=1),name="w2")
#在shape的一个维度上使用None可以方便使用不用的batch大小。在训练时需要把数据分成
#比较小的batch,但是在测试时,可以一次性使用全部的数据。当数据集比较小时,这样比较方便测试
#但是当数据集比较大时,将大量数据放入一个batch可能导致内存溢出
x=tf.placeholder(tf.float32,shape=(None,2),name="x-input")
y_=tf.placeholder(tf.float32,shape=(None,1),name="y-input")
#定义神经网络前向传播过程 a=x*w1,y=a*w2
a=tf.matmul(x,w1)
y=tf.matmul(a,w2)
#定义损失函数,使用真实值和预测值之间的交叉熵
cross_entropy= -tf.reduce_mean(y_*tf.log(tf.clip_by_value(y,1e-10,1.0)))
#定义反向传播算法
train_step=tf.train.AdamOptimizer(0.001).minimize(cross_entropy)
#通过随机数生成一个模拟数据集
rdm=RandomState(1)
dataset_size=128
X=rdm.rand(dataset_size,2)
#定义规则来给出样本的标签。在这里所有x1+x2<1 的样例都被认为是正样本(比例产品合格),
#而其他为负样本(比如零件不合格)。和TensorFlow游乐场中的算法表示法不大一样的地方是,
#在这里使用0来表示负样本,1表示正样本,大部分解决分类问题的神经网络都采用0和1的表示方法
Y=[[int(x1+x2<1)]for(x1,x2)inX]
#创建一个会话来运行TensorFlow程序,初始化变量
withtf.Session()assess:
init_op=tf.initialize_all_variables()
sess.run(init_op)
#训练之前的参数值
print(sess.run(w1))
print(sess.run(w2))
STEPS=5000
foriinrange(STEPS):
# 每次选取batch_size个样本进行训练
start=(i*batch_size)%dataset_size
end=min(start+batch_size, dataset_size)
# 通过选取的样本训练神经网络并更新参数
sess.run(train_step,feed_dict={x:X[start:end], y_:Y[start:end]})
ifi%1000==0:
# 每隔一段时间计算在所有数据上的交叉熵并输出
total_cross_entropy=sess.run(cross_entropy,feed_dict={x:X, y_:Y})
print("After %d training step(s),cross entropy on all data is %g",(i, total_cross_entropy))
#训练之后的参数值
print(sess.run(w1))
print(sess.run(w2))
#导出计算图
writer=tf.summary.FileWriter("E://workspace/tensorflow",tf.get_default_graph())
writer.close()
Tensorboard
Tensorboard是TensorFlow自带的一个强大的可视化工具。有多强大?可以看到,上述代码最后两句就是到处该模型的计算图。我们看看效果是怎么样的。
**启动tensorboard: **tensorboard --logdir=E://workspace/tensorflow,这个路径是你上述代码到处的路径。启动结果如下:
运行结果如下: