热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

单层神经网络下求一元线性回归值

单层神经网络下的


已知我们的训练数据集在坐标轴上是线性分布的,求数据集的分布规律,也就是求 Y = wX + b 函数中w和b的值,使得真实值Y1 和求得的值 wX1 + b,误差最小。


手动生成训练数据集:Y = X * 4 + 1 + noise


在训练一千遍之后,我们得到了w的值为4.00232605,b的值为0.99968383,测试集验证x1=1,y1=5.00200989,x2=2,y2= 9.00433594x3=3,y3=13.00666,基本符合Y X * 4 + 1规律。


代码:

import tensorflow as tf
import numpy as np


# 随机生成 3000行,1列向量
inputX = np.random.rand(3000,1)
# numpy.random.normal(loc=0.0, scale=1.0, size=None)
# 标准正态分布(μ=0, σ=1),对应loc=0.0, scale=1.0
# loc:此概率分布的均值(对应着整个分布的中心centre)
# scale:此概率分布的标准差(对应于分布的宽度,scale越大越矮胖,scale越小,越瘦高)
# size:输出的shape,默认为None,只输出一个值
noise = np.random.normal(0,0.05,inputX.shape)
# y=4x + 1
outputY = inputX * 4 + 1 + noise
# 第一层
# inputX.shape = (3000, 1)
# inputX.shape[1] = 1
# w 的shape实际是 (1, 4)
weight1 = tf.Variable(np.random.rand(inputX.shape[1],4))
bias1 = tf.Variable(np.random.rand(inputX.shape[1],4))
# x和w的shape行列值正好是相反,原因请看矩阵的线性变换
x1 = tf.placeholder(tf.float64, [None, 1])
# Y = w * X + b 一元线性回归模型
# tf.matmul是矩阵相乘
y1_ = tf.matmul(x1, weight1) + bias1
y = tf.placeholder(tf.float64, [None, 1])
# tf.reduce_sum(tf.square((y1_ - y)) 最小二乘的累加
# tf.reduce_mean 对矩阵降维
loss = tf.reduce_mean(tf.reduce_sum(tf.square((y1_ - y)),reduction_indices=[1]))
# 选择学习率为0.25的梯度下降法
train = tf.train.GradientDescentOptimizer(0.25).minimize(loss)
# 初始化全部变量
init = tf.initialize_all_variables()
sees = tf.Session()
sees.run(init)


# 训练一千遍
for i in range(1000):
sees.run(train, feed_dict={x1:inputX, y:outputY})


print(weight1.eval(sees))
print("====================")
print(bias1.eval(sees))
print("====================")


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



结论:

w值:
[[4.00232605 4.00232605 4.00232605 4.00232605]]
b值:
[[0.99968383 0.99968383 0.99968383 0.99968383]]
计算结果:
[[ 5.00200989 5.00200989 5.00200989 5.00200989]
[ 9.00433594 9.00433594 9.00433594 9.00433594]
[13.006662 13.006662 13.006662 13.006662 ]]


感觉今天的推文有点划水,但其实经典的神经网络模型,也就一百多行代码,随便写个脚本都比这多。神经网络、tensorflow太难了,,2021年立下的flag,要发够12篇深度学习的推文,后悔了,不想学了,太难了。





推荐阅读
author-avatar
SIX道仙人
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有