tensorfow入门4-构建隐藏层

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/AI_JOKER/article/details/98353187

构建神经网络之隐藏层

import tensorflow as tf
import numpy as np
'''
定义添加层,参数依次为输入数据、上一层节点数、隐藏层神经元个数即输出数据形状、激励函数(=None表示无激励函数)
'''
def add_layer(inputs,in_size,out_size,activation_function=None):
    Weights=tf.Variable(tf.random_normal([in_size,out_size]))
    #权重Weight采用生成正态分布随机变量矩阵,行为in_size,列为out_size
    biases=tf.Variable(tf.zeros([1,out_size])+0.1)
    #偏差矩阵为1行out_size列的0.1
    y=tf.matmul(inputs,Weights)+biases
    #y=inouts*Weight+biases
    #判断activation_function是否存在,若不存在则直接输出y,否则将y传入激励函数activation_function
    if activation_function is None:
        outputs=y
    else:
        outputs=activation_function(y)#将y值传入activation_function
    #函数返回outputs
    return outputs
x_data=np.linspace(-1,1,300)[:,np.newaxis]
#np.linespace表示-1到1之间等分成300份的一维数组
#[:,np.newaxis]表示列添加新的维度,x_data成为300行1列的矩阵,形状从一个一维数组(30,)变成(30,1)
noise=np.random.normal(0,0.05,x_data.shape)
#加入噪声,y会在x^2-0.5的线附近出现,使得数据更加真实,格式与x_data保持一致
y_data=np.square(x_data)-0.5+noise
#y=x^2-0.5+noise

xs=tf.placeholder(tf.float32,[None,1])
ys=tf.placeholder(tf.float32,[None,1])
#用placeholder占位,None表示接受任意数据

l1=add_layer(xs,1,10,activation_function=tf.nn.relu)
#l1定义为1行10列的添加层,即添加层l1输入为x_data,输入层有1个节点,本层有10个神经元,激励函数为relu
prediction=add_layer(l1,10,1,activation_function=None)#输出层
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()#初始化变量

with tf.Session() as sess:
    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}))
            #打印损失函数得分

loss得分情况输出如下,可以看到预测越来越准确

  • 0.1254172
    0.016962018
    0.0068259095
    0.0056489864
    0.0050682784
    0.004626374
    0.004295696
    0.0040645725
    0.0038843015
    0.003743085
    0.003637338
    0.003560216
    0.0034932771
    0.0034358478
    0.003382061
    0.0033384252
    0.0032973283
    0.0032651345
    0.0032400752
    0.003221214

猜你喜欢

转载自blog.csdn.net/AI_JOKER/article/details/98353187
今日推荐