美文网首页tensflow
Tensorflow机器学习5 创建神经网络

Tensorflow机器学习5 创建神经网络

作者: X_xxieRiemann | 来源:发表于2018-12-17 18:22 被阅读3次
    1、创建添加层函数
    import tensorflow as tf
    
    #P15 例子 https://www.bilibili.com/video/av16001891/?p=15
    
    #添加层
    def add_layer(inputs,in_size,out_size,activation_function=None):
        Weights = tf.Variable(tf.random_normal([in_size,out_size]))
        biases = tf.Variable(tf.zeros([1,out_size]) + 0.1)
        Wx_plus_b = tf.matmul(inputs,Weights) + biases
        if activation_function is None:
            outputs = Wx_plus_b
        else:
            outputs = activation_function(Wx_plus_b)
        return outputs
    
    2、创建神经网络
    import tensorflow as tf
    import numpy as np
    
    #P15 例子3 https://www.bilibili.com/video/av16001891/?p=15
    
    #添加层
    def add_layer(inputs,in_size,out_size,activation_function=None):
        Weights = tf.Variable(tf.random_normal([in_size,out_size]))
        biases = tf.Variable(tf.zeros([1,out_size]) + 0.1)
        Wx_plus_b = tf.matmul(inputs,Weights) + biases
        if activation_function is None:
            outputs = Wx_plus_b
        else:
            outputs = activation_function(Wx_plus_b)
        return outputs
    
    #P16 例子3 https://www.bilibili.com/video/av16001891/?p=16
    x_data = np.linspace(-1,1,300)[:,np.newaxis]
    noise = np.random.normal(0,0.05,x_data.shape)
    y_data = np.square(x_data) - 0.5 + noise
    
    xs = tf.placeholder(tf.float32,[None,1])
    ys = tf.placeholder(tf.float32,[None,1])
    
    l1 = add_layer(xs,1,10,activation_function=tf.nn.relu)
    prediction = add_layer(l1,10,1,activation_function=None)
    
    #square平方
    #reduce_sum求和,reduction_indices处理的维度
    #reduce_mean求平均值
    loss = tf.reduce_mean(tf.reduce_sum(tf.square(ys-prediction) , reduction_indices=[1]))
    
    train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss)
    
    init = tf.global_variables_initializer()
    
    sess = tf.Session()
    sess.run(init)
    
    for i in range(1000):
        sess.run(train_step,feed_dict={xs:x_data,ys:y_data})
        if i % 50 == 0:
            print(sess.run(loss,feed_dict={xs:x_data,ys:y_data}))
    

    运行结果:

    0.07432678
    0.020319471
    0.008260171
    0.0075573986
    0.0067263753
    0.005967979
    0.005414523
    0.0050400905
    0.0047189826
    0.0044596097
    0.0042297365
    0.0040490534
    0.0039058614
    0.0037829678
    0.0036782217
    0.0035844247
    0.003500444
    0.0034384385
    0.003389593
    0.0033436806
    
    3、添加可视化
    import tensorflow as tf
    import numpy as np
    import matplotlib.pyplot as plt
    
    #P15 例子3 https://www.bilibili.com/video/av16001891/?p=15
    
    #添加层
    def add_layer(inputs,in_size,out_size,activation_function=None):
        Weights = tf.Variable(tf.random_normal([in_size,out_size]))
        biases = tf.Variable(tf.zeros([1,out_size]) + 0.1)
        Wx_plus_b = tf.matmul(inputs,Weights) + biases
        if activation_function is None:
            outputs = Wx_plus_b
        else:
            outputs = activation_function(Wx_plus_b)
        return outputs
    
    #P16 例子3 https://www.bilibili.com/video/av16001891/?p=16
    x_data = np.linspace(-1,1,300)[:,np.newaxis]
    noise = np.random.normal(0,0.05,x_data.shape)
    y_data = np.square(x_data) - 0.5 + noise
    
    xs = tf.placeholder(tf.float32,[None,1])
    ys = tf.placeholder(tf.float32,[None,1])
    
    l1 = add_layer(xs,1,10,activation_function=tf.nn.relu)
    prediction = add_layer(l1,10,1,activation_function=None)
    
    #square平方
    #reduce_sum求和,reduction_indices处理的维度
    #reduce_mean求平均值
    loss = tf.reduce_mean(tf.reduce_sum(tf.square(ys-prediction) , reduction_indices=[1]))
    
    train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss)
    
    init = tf.global_variables_initializer()
    
    sess = tf.Session()
    sess.run(init)
    
    fig = plt.figure()
    ax = fig.add_subplot(1,1,1)
    ax.scatter(x_data,y_data)
    plt.ion()
    
    
    for i in range(1000):
        sess.run(train_step,feed_dict={xs:x_data,ys:y_data})
        if i % 50 == 0:
            print(sess.run(loss,feed_dict={xs:x_data,ys:y_data}))
    
            try:
                ax.lines.remove(lines[0])
            except Exception:
                pass
            prediction_value = sess.run(prediction,feed_dict={xs:x_data})
            lines = ax.plot(x_data,prediction_value,'r-',lw=5)
            plt.pause(0.1)
    
    plt.ioff()
    plt.show()
    
    

    相关文章

      网友评论

        本文标题:Tensorflow机器学习5 创建神经网络

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