当前位置: 首页 > news >正文

外包项目网站宁波seo排名公司

外包项目网站,宁波seo排名公司,什么网站做新产品代理,井祥交通建设工程有限公司 网站上一篇:2 用TensorFlow构建一个简单的神经网络-CSDN博客 本篇目标是介绍如何构建一个简单的线性回归模型,要点如下: 了解神经网络原理构建模型的一般步骤模型重要参数介绍 1、神经网络概念 接上一篇,用tensorflow写了一个猜测西…

上一篇:2 用TensorFlow构建一个简单的神经网络-CSDN博客

本篇目标是介绍如何构建一个简单的线性回归模型,要点如下:

  • 了解神经网络原理
  • 构建模型的一般步骤
  • 模型重要参数介绍


1、神经网络概念

接上一篇,用tensorflow写了一个猜测西瓜价格的简单模型,理解代码前先了解下什么是神经网络。

下面是百度AI对神经网络的解释:

神经网络是一种运算模型,由大量的节点(或称神经元)之间相互联接构成,每个节点代表一种特定的输出函数,称为激励函数(activation function)。每两个节点间的连接都代表一个对于通过该连接信号的加权值,称之为权重,这相当于人工神经网络的记忆。网络的输出则依网络的连接方式,权重值和激励函数的不同而不同。而网络自身通常都是对自然界某种算法或者函数的逼近,也可能是对一种逻辑策略的表达。
神经网络是一种广泛并行互连的网络,它的组织能够模拟生物神经系统对真实世界物体所做出的交互反应。

首先我们要了解下密集层(也叫全连接层),密集层是一个深度连接的神经网络层,在神经网络中指的是每个神经元都与前一层的所有神经元相连的层。

在上一篇我们创建了预测价格模型,代码为:

model = tf.keras.Sequential([
    tf.keras.layers.Dense(1, input_shape=[1])
])

其中Sequential是顺序的意思,Dense就是密集层。

看文字有点抽象,举个例子,如下图所示:神经元a1与所有输入层数据相连(X1,X2,X3),其他神经元也一样都与上一层神经元相连,这样形成的神经网络就是密集层。

它们之间的数学关系为:

某个神经元是由连接的上一层神经元分别乘上权重(w),再加上偏差(b)得到,例如计算a1:

权重w的数字下标可以按照顺序命名,比如第一个神经元计算的权重可以为w11、w12……,第二个神经元计算的权重可以为w21、w22……

a2、a3计算以此类推。

了解这些基本的原理后,我们就开始创建一个简单的费用预测模型。

2、西瓜费用预测模型详解

代码如下:

import numpy as np
import tensorflow as tf# 西瓜的重量
weight = np.array([1, 3, 4, 5, 6, 8], dtype=float)# 对应的费用
total_cost = np.array([1.7, 4.1, 5.3, 6.5, 7.7, 10.1], dtype=float)model = tf.keras.Sequential([tf.keras.layers.Dense(1, input_shape=[1])
])model.compile(loss=tf.losses.mean_squared_error, optimizer='SGD')history = model.fit(weight, total_cost, epochs=500)# 训练完成后,预测10斤西瓜的总费用
print(model.predict([10]))

上一篇西瓜费用计算公式 :费用=1.2元/斤*重量+0.5元

即:y=1.2x+0.5

这是一个一元线性回归问题,只有一个自变量x和一个因变量y,机器学习要推算出权重w=1.2, 偏差b=0.5,才能准确预测费用。

具体流程如下:

(1)训练数据准备

西瓜重量 weight=[1, 3, 4, 5, 6, 8]

对应的费用 total_cost=[1.7, 4.1, 5.3, 6.5, 7.7, 10.1]

(2)构建模型

model = tf.keras.Sequential([
    tf.keras.layers.Dense(1, input_shape=[1])
])

  • tf.keras.layers.Dense(1, input_shape=[1]),参数1表示1个神经元,我们只要预测费用y,所以输出层只要一个神经元就可以了(注意:神经元不用包含输入层)。
  • input_shape=[1],表示输入数据的形状为单元素列表,即每个输入数据只有一个值。因为只有一个变量x(西瓜的重量),所以此处输入形状是[1]

该模型的示意图:

可以用model.summary()查看模型摘要,代码如下:

import numpy as np
import tensorflow as tf# 西瓜的重量
weight = np.array([1, 3, 4, 5, 6, 8], dtype=float)# 对应的费用
total_cost = np.array([1.7, 4.1, 5.3, 6.5, 7.7, 10.1], dtype=float)model = tf.keras.Sequential([tf.keras.layers.Dense(1, input_shape=[1])
])# 查看模型摘要
model.summary()

运行结果:

可以看到可训练参数有2个,即公式中的w1和b1。

(3)设置损失函数和优化器
model.compile(loss=tf.losses.mean_squared_error, optimizer='SGD')
  • mean_squared_error是均方误差,指的是预测值与真实值差值的平方然后求和再平均。公式为:

                    MSE=1/n Σ(P-G)^2 (P为预测值,G为真实值)

  • SGD即随机梯度下降(Stochastic Gradient Descent),是一种迭代优化算法。

(4)训练模型
history = model.fit(weight, total_cost, epochs=500)
  • 设置训练数据的特征和标签,在上述代码中分别是西瓜的重量和费用:weight、total_cost
  • 设置训练轮次epochs=500,1个epochs是指使用所有样本训练一次。

(5) 查看训练结果

看下面的训练过程,第8个epoch的时候损失值loss已经很小了,训练轮次不需要设置到500就可以有很好的预测效果了。

刚开始loss很高,使用优化算法慢慢调整了权重,loss值可以很好地衡量我们的模型有多好。

我们把epoch的值调小,看看程序猜测的权重(w)和偏差(b)是多少,以及loss值的计算。

 

代码改动如下:

  •  epochs=5
  • 用model.get_weights()获取程序猜测的权重数据
import numpy as np
import tensorflow as tf# 西瓜的重量
weight = np.array([1, 3, 4, 5, 6, 8], dtype=float)# 对应的费用
total_cost = np.array([1.7, 4.1, 5.3, 6.5, 7.7, 10.1], dtype=float)model = tf.keras.Sequential([tf.keras.layers.Dense(1, input_shape=[1])
])model.compile(loss=tf.losses.mean_squared_error, optimizer='SGD')history = model.fit(weight, total_cost, epochs=5)# 获取权重数据
w = model.get_weights()[0]
b = model.get_weights()[1]print('w:')
print(w)
print('b: ')
print(b)# 训练完成后,预测10斤西瓜的总费用
print(model.predict([10]))

运行结果:

训练了5个epoch后,程序猜测w是1.1807659,b为0.33192113

            y=wx+b=1.1807659*10+0.33192113=12.139581

所以预测10斤西瓜的总费用是12.139581

                 

3、创建更复杂一点的模型

现实生活中我们要预测的东西影响因素可能有很多个,如房价预测,房价可能受到房屋面积、房间数量等等因素影响。思考一下,下面的神经网络图创建模型时要如何设置参数呢?

model = tf.keras.Sequential([tf.keras.layers.Dense(2, input_shape=[3]),tf.keras.layers.Dense(1)
])
  • 输入层有3个变量,input_shape=[3]
  • 隐藏层有2个神经元,所以 tf.keras.layers.Dense(2, input_shape=[3]) 的units设为2
  • 输出层只有1个神经元,所以 tf.keras.layers.Dense(1) 的units设为1
  • tf.keras.Sequential的‘Sequential’是顺序的意思,添加的这些layers就按顺序堆叠

         

http://www.yayakq.cn/news/812931/

相关文章:

  • 火车头发布wordpress带磁力链宁波网站推广网站优化
  • 建网站服务公司wordpress 微博
  • 企业被网站收录备案期间网站能打开吗
  • 1688企业网站建设临安网站建设公司
  • 做高端品牌生产商的网站ui设计包括哪些内容
  • 网站改版的必要性检查wordpress主题
  • 网站建设路由器怎么设置免费给网站做seo
  • 济南建网站公司优书网有官方app吗
  • 网站建设优化排名推广个人网站设计成首页
  • 天津市网站建设公司唐山百度seo公司
  • wap织梦手机网站网页更改
  • 网站后台管理系统制作软件wordpress用户名u开头
  • 网站功能设计的内容质量检测中心培训网站
  • 寿光做网站的做网站用什么域名比较好
  • 海口网站建设服务注册的空间网站吗
  • 官方网站建设源码系统做网站竞价没有点击率
  • wordpress the7下载seo 网站 制作
  • 网站开发的核心技术泰安网红打卡地
  • 做ae好的网站有哪些网页版梦幻西游全新联动
  • 网站开发人员薪酬网站推广适合女生做吗
  • 北京电商网站建设外包群晖 wordpress配置
  • 买了个域名怎么做网站购买域名有什么用
  • 网站建设对比怀化市住房和城乡建设局网站
  • 影视文化传媒公司网站建设一站式做网站多少钱
  • 企业商务网站建设策划书vscode网站开发
  • 免费的汽车网站源码湘潭做网站建设的公司
  • 网站策划用培训吗中铁建设集团有限公司招标平台
  • 自己建立网站步骤优化 保证排名
  • 当当网站建设的目标盐城网站建设价格
  • 网站关键词排名优化国家信息公示网