入门知识
指定TensorFlow图后,若要执行计算,需要启动一个执行计算的会话
1
2
3
4
5
6
7
8import tensorflow as tf
N = tf.constant([[1., 2.],[3.,4.]])
NN = tf.matmul(N,N)
sess = tf.Session()
output = sess.run(NN) # 计算特定节点
sess.close()可以使用交互式会话
1
2sess = tf.InteractiveSession() # 交互式操作
NN.eval()用feed_dict给tf.Variable()喂数据,否则需要初始化
1
2
3
4
5
6
7
8a = tf.constant(1)
b = tf.Variable(0, name="weight")
c = a + b + 1
sess.run(c, feed_dict = {a:2., b:3.})
init_op = tf.initialize_all_variables()
sess.run(init_op)
c.eval()用tf.placeholder()承载数据
1
x = tf.placeholder("float", [None, 1296])
分别绘制训练集、验证集的准确率
1
2plt.plot(train_acc,'bo')
plt.plot(test_acc,'rx')绘制权重图(weight),重要的地方1,不重要的地方0
1
2plt.pcolor(W.eval()[:,0].reshape([36,36])) # W.eval().shape == (1296, 5)
# plt.pcolormesh(W.eval()[:,0].reshape([36,36]))
深度神经网络
使用混淆矩阵(5*5)判断模型在五种分类中的哪一类效果不好
一个好的模型会在对角线上具有较大值,而其余位置则不多1
2
3
4
5
6
7pred = np.argmax(y.eval(feed_dict={x: test.reshape([-1,1296]), y_: onehot_test}), axis = 1)
conf = np.zeros([5,5])
for p,t in zip(pred,np.argmax(onehot_test,axis=1)):
conf[t,p] += 1 # t是真实结果,p是模型预测
plt.matshow(conf)
plt.colorbar()训练完后的验证:
①检验模型精度(训练集验证集曲线、混淆矩阵)
②可视化分析像素权重
③分析输出权重1
2plt.matshow(W3.eval()) # 每行表示一个神经元,每列表示一个类
plt.colorbar()
卷积神经网络
- 使用卷积+池化在结构化数据(图像)中,提取小尺度、大尺度的特征
递归神经网络
总结整理
参考
内容 | 描述 |
---|---|
《基于TensorFlow的深度学习:揭示数据隐含的奥秘》代码 | tf1.2.1 |