• 假期第15天


    #创建一个神经网络层
    def add_layer(input,in_size,out_size,activation_function=None):
    """
    :param input: 数据输入
    :param in_size: 输入大小
    :param out_size: 输出大小
    :param activation_function: 激活函数(默认没有)
    :return:output:数据输出
    """
    Weight=tf.Variable(tf.random_normal([in_size,out_size]) )
    biases=tf.Variable(tf.zeros([1,out_size]) +0.1 )
    W_mul_x_plus_b=tf.matmul(input,Weight) + biases
    #根据是否有激活函数
    if activation_function == None:
    output=W_mul_x_plus_b
    else:
    output=activation_function(W_mul_x_plus_b)
    return output

    #创建一个具有输入层,隐藏层,输出层的三层神经网络,神经元个数分别为1,10,1
    x_data=np.linspace(-1,1,300)[:,np.newaxis] # 创建输入数据 np.newaxis分别是在列(第二维)上增加维度,原先是(300,)变为(300,1)
    noise=np.random.normal(0,0.05,x_data.shape)
    y_data=np.square(x_data)+1+noise # 创建输入数据对应的输出

    # print(x_data.shape)
    # x=np.linspace(-1,1,300)
    # print(x.shape)

    #定义输入数据
    xs=tf.placeholder(tf.float32,[None,1])
    ys=tf.placeholder(tf.float32,[None,1])

    #定义一个隐藏层
    hidden_layer1=add_layer(xs,1,10,activation_function=tf.nn.relu)
    #定义一个输出层
    prediction=add_layer(hidden_layer1,10,1,activation_function=None)

    #求解神经网络参数
    #1.定义损失函数
    loss=tf.reduce_mean(tf.reduce_sum(tf.square(ys-prediction) ,reduction_indices=[1] ))
    #2.定义训练过程
    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() #Turn interactive mode on 开启互动模式
    plt.show() #Display a figure


    #3.进行训练
    for i in range(1000):
    sess.run(train_step,feed_dict={xs:x_data,ys:y_data})
    if i%100==0:
    try:
    ax.lines.remove(lines[0]) #擦除之前的轨迹
    except Exception:
    pass

    print(sess.run(loss,feed_dict={xs:x_data,ys:y_data} ) )
    # 计算预测值
    prediction_value = sess.run(prediction, feed_dict={xs: x_data})
    #print(prediction.shape)
    # 绘制预测值
    lines = ax.plot(x_data, prediction_value, 'r-', lw=5)
    plt.pause(0.1)
    # 关闭Session
    plt.pause(1000)

    #关闭sess
    sess.close()

  • 相关阅读:
    rabbitmq使用
    redis
    IO模型与IO复用介绍
    事件驱动与异步IO使用
    协程
    进程
    线程、锁
    paramiko模块与 StringIO模块
    socketserver 编程
    随记
  • 原文地址:https://www.cnblogs.com/yyl141/p/14300593.html
Copyright © 2020-2023  润新知