Tensorflow 入门学习5 建立一个隐藏层的神经网络实现回归分析

版权声明:(谢厂节的博客)博主文章绝大部分非原创,转载望留链接。 https://blog.csdn.net/xundh/article/details/82754412

本文学习资源来自《TensorFlow 深度学习应用实践》
这里写图片描述

这是TensorFlow的入门程序,是一个回归分析的具体应用。
上图是一个需要设计的神经网络,这里准备建立一个有一个隐藏层的神经网络去实现回归分析,这个神经网络有输入层、隐藏层与输出层。下面程序具体实现了这个神经网络模型。

import tensorflow as tf
import numpy as np
"""
这里是一个非常好的大数据验证结果,随着数据量的上升,集合的结果也越来越接近真实值,
这也是反馈神经网络的一个比较好的应用
这里不是很需要各种激励函数
而对于dropout,这里可以看到加上dropout,loss的值更快
随着数据量的上升,结果就更加接近于真实值。
"""
# 使用NumPy的随机生成数据功能生成一个y=4x+1的线性曲线,数据inputX、noise为随机生成的输入数与满足偏差为0.05的正态分布的噪音数
inputX = np.random.rand(3000,1) # 这里生成3000个符合均匀分布的随机样本值
noise = np.random.normal(0,0.05,inputX.shape) # np.random.normal(size,loc,scale):  给出均值为loc,标准差为scale的高斯随机数(场).
outputY = inputX * 4 + 1 + noise

# 创建了有一个隐藏层的反馈神经网络去计算这个线性曲线
# 神经网络隐藏层的变量
weight1 = tf.Variable(np.random.rand(inputX.shape[1],4))
bias1 = tf.Variable(np.random.rand(inputX.shape[1],4))

# 占位符
x1 = tf.placeholder(tf.float64,[None,1])
# 神经网络设立的模型目标,形式为 Y=x*w+b
y1_ = tf.matmul(x1,weight1) + bias1

y = tf.placeholder(tf.float64, [None,1])
# 损失函数,这里采用的是最小二乘法的损失函数,即计算模型输出值与真实值之间的误差的最小二乘法
loss = tf.reduce_mean(tf.reduce_sum(tf.square((y1_-y)), reduction_indices=[1]))

train = tf.train.GradientDescentOptimizer(0.25).minimize(loss)    #选择梯度下降的训练方法

# 数据初始化
init=tf.initialize_all_variables()
sess = tf.Session()
sess.run(init)

for i in range(1000):
    sess.run(train,feed_dict={x1:inputX,y:outputY})
    
print(weight1.eval(sess))
print("----------------")
print(bias1.eval(sess))
print("-------------result is:------------------")

x_data = np.matrix([[1.],[2.],[3.]])
print(sess.run(y1_,feed_dict={x1:x_data}))

运行结果:
这里写图片描述

这个是一个最简单的一元回归分析函数。

猜你喜欢

转载自blog.csdn.net/xundh/article/details/82754412
今日推荐