美文网首页机器学习程序员
TensorFlow学习笔记(2)

TensorFlow学习笔记(2)

作者: 只是不在意 | 来源:发表于2017-08-31 09:21 被阅读60次

    实战案例一 非线性模型

    重点是神经网络中间层的应用

    import tensor as tf
    import numpy as np
    import matplotlib.pyplot as plt
    
    #用np.linspace生成两百个在-0.5到0.5之间的随机值
    因为需要使用的是二维数据,所以用np.newaxis加一个维度,成为200行一列的矩阵
    x_data = np.linspace(-0.5,0.5,200)[;,np.newaxis]
    #加入噪音
    noise = np.random.normal(0,0.02,x_data.shape)
    #生成非线性模型
    y_data = np.square(x_data) + noise 
    
    #定义两个占位矩阵,行数不定,一列
    x = tf.placeholder(tf.float32,[None,1])
    y = tf.placeholder(tf.float32,[None,1])
    
    ## 定义神经网络中间层,用10个神经元作中间层,所以是1 - 10 - 1的构架 ##
    #定义权值,1行10列
    Weights_L1 = tf.Variable(tf.random_normal([1,10]))
    
    #偏置值初始化为0
    biases_L1 = tf.Variable(tf.zeros([1,10]))
    #生成信号的总合(x矩阵乘以权值,然后加上偏置值)
    Wx_plus_b_L1 = tf.matmul(x,Weight_l1) + biases_L1
    
    #双矩阵生成信号的总合
    L1 = tf.nn.tanh(Wx_plus_b_L1)
    
    #定义神经网络输出层
    中间层有10个神经元,输出层有1个神经元,所以权值这里从[1,10]变为[10,1]
    Weights_L2 = tf.Variable(tf.random_normal([10,1]))
    
    #偏侧值仍然只有1个神经元,所以是[1,1]
    biases_L2 = tf.Variable(tf.zeros([1,1]))
    
    #输出层的输入等于输出层的输出,所以x变为L1
    Wx_plus_b_L2 = tf.matmul(L1,Weight_L2) + biases_L2
    prediction = tf.nn.tanh(Wx_plus_b_L2)
    
    #二次代价函数(见笔记1)
    loss = tf.reduce_mean(tf.square(y - prediction))
    #使用梯度下降法训练
    train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss)
    
    #定义会话
    with tf.Session() as sess:
    #变量初始化,训练2000次
            sess.run(tf.global_variables_initializer())
            for _ in range(2000):
                   sess.run(train_setp,feed_dict={x:x_data,y:y_data})
    
    #获得预测值
    prediction_value = sess.run(prediction,feed_dict = {x:x_data})
    
    #画图
    plt.figure()
    plt.scatter(x_data,y_data)
    plt.plot(x_data,prediction_value,'r-',lw=5)
    plt.show
    

    因为有噪音,所以蓝色的点是上下移动。红线是训练好的神经网络。它对于整个蓝色样本模型的loss是最小的。

    TensorFlow学习笔记(1) http://www.jianshu.com/p/25d53f2289f4

    相关文章

      网友评论

        本文标题:TensorFlow学习笔记(2)

        本文链接:https://www.haomeiwen.com/subject/cgwbdxtx.html