[深度学习框架]TensorFlow入门

入门知识

  1. 指定TensorFlow图后,若要执行计算,需要启动一个执行计算的会话

    1
    2
    3
    4
    5
    6
    7
    8
    import tensorflow as tf

    N = tf.constant([[1., 2.],[3.,4.]])
    NN = tf.matmul(N,N)

    sess = tf.Session()
    output = sess.run(NN) # 计算特定节点
    sess.close()
  2. 可以使用交互式会话

    1
    2
    sess = tf.InteractiveSession() # 交互式操作
    NN.eval()
  3. 用feed_dict给tf.Variable()喂数据,否则需要初始化

    1
    2
    3
    4
    5
    6
    7
    8
    a = 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()
  4. 用tf.placeholder()承载数据

    1
    x = tf.placeholder("float", [None, 1296])
  5. 分别绘制训练集、验证集的准确率

    1
    2
    plt.plot(train_acc,'bo')
    plt.plot(test_acc,'rx')
  6. 绘制权重图(weight),重要的地方1,不重要的地方0

    1
    2
    plt.pcolor(W.eval()[:,0].reshape([36,36])) # W.eval().shape == (1296, 5)
    # plt.pcolormesh(W.eval()[:,0].reshape([36,36]))

深度神经网络

  1. 使用混淆矩阵(5*5)判断模型在五种分类中的哪一类效果不好
    一个好的模型会在对角线上具有较大值,而其余位置则不多

    1
    2
    3
    4
    5
    6
    7
    pred = 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()
  2. 训练完后的验证:
    ①检验模型精度(训练集验证集曲线、混淆矩阵)
    ②可视化分析像素权重
    ③分析输出权重

    1
    2
    plt.matshow(W3.eval()) # 每行表示一个神经元,每列表示一个类
    plt.colorbar()

卷积神经网络

  1. 使用卷积+池化在结构化数据(图像)中,提取小尺度、大尺度的特征

递归神经网络

总结整理

参考