3 tensorflow构建模型详解

这篇具有很好参考价值的文章主要介绍了3 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),其他神经元也一样都与上一层神经元相连,这样形成的神经网络就是密集层。

3 tensorflow构建模型详解,【Python人工智能】tensorflow入门,tensorflow,人工智能,python

它们之间的数学关系为:

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

3 tensorflow构建模型详解,【Python人工智能】tensorflow入门,tensorflow,人工智能,python

权重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

机器学习要推算出权重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]

该模型的示意图:

3 tensorflow构建模型详解,【Python人工智能】tensorflow入门,tensorflow,人工智能,python

可以用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()

运行结果:

3 tensorflow构建模型详解,【Python人工智能】tensorflow入门,tensorflow,人工智能,python

可以看到可训练参数有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就可以有很好的预测效果了。

3 tensorflow构建模型详解,【Python人工智能】tensorflow入门,tensorflow,人工智能,python

刚开始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]))

运行结果:

3 tensorflow构建模型详解,【Python人工智能】tensorflow入门,tensorflow,人工智能,python

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

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

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

                 

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

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

3 tensorflow构建模型详解,【Python人工智能】tensorflow入门,tensorflow,人工智能,python

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就按顺序堆叠

         

下一篇:4 Tensorflow图像识别模型——数据预处理-CSDN博客文章来源地址https://www.toymoban.com/news/detail-734170.html

到了这里,关于3 tensorflow构建模型详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • OpenAI的人工智能语音识别模型Whisper详解及使用

            拥有ChatGPT语言模型的OpenAI公司,开源了 Whisper 自动语音识别系统,OpenAI 强调 Whisper 的语音识别能力已达到人类水准。         Whisper是一个通用的语音识别模型,它使用了大量的多语言和多任务的监督数据来训练,能够在英语语音识别上达到接近人类水平的鲁

    2024年02月09日
    浏览(58)
  • 利用人工智能模型学习Python爬虫

    爬虫是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。 网络爬虫(又称为网页蜘蛛,网络机器人)是其中一种类型。 爬虫可以自动化浏览网络中的信息,当然浏览信息的时候需要按照我们制定的规则进行,这些规则我们称之为网络爬虫算法。 ——使用讯飞星火

    2024年02月09日
    浏览(44)
  • 3、TensorFlow教程--- 理解人工智能

    人工智能包括通过机器和特殊计算机系统模拟人类智能的过程。人工智能的示例包括学习、推理和自我校正。人工智能的应用包括语音识别、专家系统、图像识别和机器视觉。 机器学习是人工智能的一个分支,它处理可以学习任何新数据和数据模式的系统和算法。 让我们关

    2024年02月08日
    浏览(55)
  • [当人工智能遇上安全] 13.威胁情报实体识别 (3)利用keras构建CNN-BiLSTM-ATT-CRF实体识别模型

    《当人工智能遇上安全》系列将详细介绍人工智能与安全相关的论文、实践,并分享各种案例,涉及恶意代码检测、恶意请求识别、入侵检测、对抗样本等等。只想更好地帮助初学者,更加成体系的分享新知识。该系列文章会更加聚焦,更加学术,更加深入,也是作者的慢慢

    2024年04月22日
    浏览(36)
  • 【人工智能】简单线性回归模型介绍及python实现

    简单线性回归是人工智能和统计学中一个基本的预测技术,用于分析两个连续变量之间的线性关系。在简单线性回归中,我们试图找到一个线性方程来最好地描述这两个变量之间的关系。 变量 :简单线性回归涉及两个变量 - 自变量(independent variable)和因变量(dependent vari

    2024年01月17日
    浏览(51)
  • 人工智能之Tensorflow技术特点及组件结构

    前言 Tensorflow的前身时谷歌的神经网络算法库DistBelief,被广泛应用于各类机器学习、深度学习算法的编程实现。Tensorflow具有实现代码简洁、编程范式灵活、分布式深度学习算法执行效率高、多语言API支持、CPU/GPU部署方便、良好的可扩展性、可移植性及在学术研究和产品研发

    2024年02月21日
    浏览(53)
  • TensorFlow人工智能开源深度学习框架简单认识

    TensorFlow是一个使用数据流图进行数值计算的开源深度学习框架。它由Google Brain团队开发,并于2015年开源发布。TensorFlow的核心概念是使用图表示计算任务,其中节点表示操作,边表示数据流动。 TensorFlow被广泛用于机器学习和深度学习任务。它的特点包括: 强大的计算能力:

    2024年01月21日
    浏览(49)
  • 【人工智能】多元线性回归模型举例及python实现方式

    比如你做了一个企业想要招人,但是不知道月薪应该定在多少,你做了一个月薪和收入的调研,包括年限、学历、地区和月薪 做一个月薪=w1 年限+w2 学历+w3*城市+…+b的工作年限和薪资的多元线性模型,然后找出最适合线性模型的直线-成本函数、梯度下降方式,来预估你可以

    2024年02月19日
    浏览(52)
  • 人工智能TensorFlow MNIST手写数字识别——实战篇

    上期文章TensorFlow手写数字-训练篇,我们训练了我们的神经网络,本期使用上次训练的模型,来识别手写数字(本期构建TensorFlow神经网络代码为上期文章分享代码) http://scs.ryerson.ca/~aharley/vis/conv/ 0、插入第三方库 1、图片处理函数

    2024年02月15日
    浏览(56)
  • 生成式人工智能聊天黑客松导学系列 - 用 Python 构建您的第一个 RAG 应用

    点击蓝字 关注我们 编辑:Alan Wang 排版:Rani Sun 活动简介 在过去半年,我们有数以百计的开发人员使用 Python 结合不同领域的知识构建基于人工智能的聊天应用程序。用户只需要通过简单提问就可以使用 RAG(检索增强生成)从 LLM 模型获取专业的知识回答。 我们也从不少传统

    2024年02月21日
    浏览(70)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包