YB菜菜的机器学习自学之路(七)——简单了解keras框架

news2024/11/17 10:44:46

YB菜菜的机器学习自学之路(七)——简单了解keras框架

  • 前提说明
  • 1. 机器学习框架-keras
    • 1.1 keras框架的特点
    • 1.2 keras框架实现一个神经元的建立的过程
  • 2. 举例说明
    • 2.1 一个神经元 和输入特征为1的案例
    • 2.2 多神经元 和单输入特征为1的案例
    • 2.3 多输入,单神经元
    • 2.4 多输入多神经元案例

前提说明

一个一个编写前向传播和后向传播是十分麻烦的,一些打包好的机器学习框架可以帮助我们解决这些问题。这里简单了解keras框架,然后记录**课程《小白也能听懂的人工智能课》**中几个简单的应用例子。

1. 机器学习框架-keras

1.1 keras框架的特点

》Keras框架实现了机器学习神经网络底层复杂数学运算的封装,可以通过它提供的上层接口搭建模型。
除了Keras框架外,还有Tensorflow等框架。
》相比于Tensorflow框架,Keras更像是python,其主要特点是简单易用。但不如Tensorflow(更接近C语言)灵活和强大。

1.2 keras框架实现一个神经元的建立的过程

(1)导入keras框架

from keras.models import Sequential

(2)创建模型

model = Sequential()

(3)创建一个神经元

model.add(Dense(uints=, activation='', input_dim = ))

其中
Dense: 设置神经元层数,是一个全链接层
uiits: 设置当前层的神经元数量
activation:设置激活函数类型
input_dim:输入数据特征维度
在这里插入图片描述

(4)告诉keras使用什么样的代价函数和调整方法

model.compile(loss='',optimizer='',metrics=[''])

其中:
loss: 设置代价函数
optimizer : 设置优化器,包括学习率等
metrics: 设置评估标准

(5)开始训练

model.fit(x,y,epochs=,batch_size=)

其中
x:观测量中的自变量数据
y: 观测量中的因变量数据
epochs:设置训练回合数
batch_size: 批量数

2. 举例说明

2.1 一个神经元 和输入特征为1的案例

(1)数据源
在这里插入图片描述

(2)导入keras和层

from keras.models import Sequential
from keras.layers import Dense

(2)设置层

model = Sequential()
model.add(Dense(units=1, activation='sigmoid', input_dim = 1))

Sequential 是堆叠神经元的载体,神经元堆叠在一起形成一个网络预测模型(model)
在这个model内部增加一个全连接层:
uiits=1: 设置当前层的神经元数量为1
activation=‘sigmoid’:设置激活函数类型为sigmoid
input_dim=1:输入数据特征维度,因为数据维度只有1个 所以设置为1
(3)设置代价函数和梯度下降算法

model.compile(loss='mean_squared_error',optimizer=SGD(lr=0.01),metrics=['accuracy'])

loss: 设置代价函数为均方根误差
optimizer : 设置SGD(梯度下降),以及学习率lr为0.01
metrics: 设置精度为评估标准

(4)开始训练

model.fit(X,Y,epochs=5000, batch_size=10)

训练回合为5000
每次使用观测量中的10个数据
(5)针对训练结果查看预测结果

pres = model.predict(X)

在这里插入图片描述

2.2 多神经元 和单输入特征为1的案例

(1)数据源导入
在这里插入图片描述
(2)导入keras和层

from keras.models import Sequential
from keras.layers import Dense

(2)设置层

model = Sequential()
model.add(Dense(units=2, activation='sigmoid', input_dim = 1))
model.add(Dense(units=1, activation='sigmoid'))

与前面不同,这里有3个神经元,共两层
因此需要再增加一个model.add
注:由于Dense是全链接,所以第二个add不需要再写输入维度。

(3)设置代价函数和梯度下降算法

model.compile(loss='mean_squared_error',optimizer=SGD(lr=0.05),metrics=['accuracy'])

loss: 设置代价函数为均方根误差
optimizer : 设置SGD(梯度下降),以及学习率lr为0.05 (调参)
metrics: 设置精度为评估标准

(4)开始训练

model.fit(X,Y,epochs=5000, batch_size=10)

训练回合为5000
每次使用观测量中的10个数据
(5)针对训练结果查看预测结果

pres = model.predict(X)

在这里插入图片描述

2.3 多输入,单神经元

(1)数据导入

在这里插入图片描述
输入数据参数为:大小,和颜色
数据特征是线性可分

(2)导入keras和层

from keras.models import Sequential
from keras.layers import Dense

(2)设置层

model = Sequential()
model.add(Dense(units=1, activation='sigmoid', input_dim = 2))

与前面不同,这里数据有2个维度,所以输入维度设置为2

(3)设置代价函数和梯度下降算法

model.compile(loss='mean_squared_error',optimizer=SGD(lr=0.05),metrics=['accuracy'])

loss: 设置代价函数为均方根误差
optimizer : 设置SGD(梯度下降),以及学习率lr为0.05 (调参)
metrics: 设置精度为评估标准

(4)开始训练

model.fit(X,Y,epochs=5000, batch_size=10)

训练回合为5000
每次使用观测量中的10个数据
(5)针对训练结果查看预测结果

pres = model.predict(X)

在这里插入图片描述

2.4 多输入多神经元案例

(1)数据导入
在这里插入图片描述
复杂数据集

(2)设置层

model = Sequential()
model.add(Dense(units=2, activation='sigmoid', input_dim = 2))
model.add(Dense(units=1, activation='sigmoid'))

这里有3个神经元,共两层,且2个输入
因此需要再增加一个model.add
注:由于Dense是全链接,所以第二个add不需要再写输入维度。

(3)设置代价函数和梯度下降算法

model.compile(loss='mean_squared_error',optimizer=SGD(lr=0.05),metrics=['accuracy'])

loss: 设置代价函数为均方根误差
optimizer : 设置SGD(梯度下降),以及学习率lr为0.05 (调参)
metrics: 设置精度为评估标准

(4)开始训练

model.fit(X,Y,epochs=5000, batch_size=10)

训练回合为5000
每次使用观测量中的10个数据
(5)针对训练结果查看预测结果

pres = model.predict(X)

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/192523.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第11-15章

第11章 枚举和注解 11.1举例 要求创建季节(Season) 对象,请设计并完成。 但是,季节的值是有限的几个值(4个季节),不可以再多。 就可以用枚举来解决 枚举(enumeration,简写enum),是一组常量的集…

【自学Python】Python字符串对齐教程

Python字符串左对齐 大纲 Python字符串左对齐教程 Python 字符串的左对齐,即在我们需要设定 字符串 为固定的长度时,如果字符串的长度不够,则我们可以指定使用特定的字符在字符串的右边进行填充,从而达到左对齐的目的。 在 Pyt…

请求域名requests.(url = 地址)报错

报错:raise MissingSchema(requests.exceptions.MissingSchema: Invalid URL titles: No scheme supplied. Perhaps you meant http://titles?报错分析:response requests.get(urlurl,headersheaders) # print(response) response.encoding"utf-…

Docker逃逸二三事

Docker逃逸在渗透测试中面向的场景大概是这样,渗透拿到shell后,发现主机是docker环境,要进一步渗透,就必须逃逸到“直接宿主机”。甚至还有物理机运行虚拟机,虚拟机运行Docker容器的情况。那就还要虚拟机逃逸了。所以本…

【LeetCode】2325. 解密消息

给你字符串 key 和 message ,分别表示一个加密密钥和一段加密消息。解密 message 的步骤如下: 使用 key 中 26 个英文小写字母第一次出现的顺序作为替换表中的字母 顺序 。将替换表与普通英文字母表对齐,形成对照表。按照对照表 替换 messag…

C语言课设作业《通讯录》全程记录 ps:动态版本

写在前面: 通讯录算是前面对学过知识的一个综合运用,涉及到的知识点有 :枚举类型,结构体、结构体指针、动态内存分配(malloc,calloc,realloc,free)、typedef关键字、多文件编程等以上内容,设计思想不是太难&#xff0c…

Java多线程环境下使用的集合类

Java标准库中大部分集合类都是线程不安全的, 多线程环境下使用同一个集合类对象, 很可能会出问题; 只有少部分是线程安全的, 比如: Vector, Stack, HashTable这些, 关键方法都会带有synchronized, 但一般是不推荐使用这几个类的. 一. 多线程环境下使用ArrayList ArrayList在多…

浅析设计模式4——模板方法模式

我们在进行软件开发时要想实现可维护、可扩展,就需要尽量复用代码,并且降低代码的耦合度。设计模式就是一种可以提高代码可复用性、可维护性、可扩展性以及可读性的解决方案。大家熟知的23种设计模式,可以分为创建型模式、结构型模式和行为型…

OAuth2简介

目录一、 什么是OAuth2二、OAuth2中的角色三、认证流程四、生活中的Oauth2思维五、令牌的特点六、OAuth2授权方式1、授权码2、隐藏方式3、密码方式4、凭证方式一、 什么是OAuth2 OAuth2.0是目前使用非常广泛的授权机制,用于授权第三方应用获取用户的数据。 举例说明…

使用Vuex的个人理解

一、逻辑原理 要使用 Vuex 进行集中管理数据(状态),按照 Vuex 分模块的设 计思想,先在 src 下创建 store 文件夹,然后创建一个根级别的 index.js,作为组装模块并导出 store 地方(store 对象是 …

xss.haozi.me通关教程

10.xss.haozi.me通关教程 0x00 首先整体浏览网站 分别是xss注入点&#xff0c;注入后的HTML代码以及网页源码 构造常规payload&#xff1a; <script>alert(1)</script> 成功通关 0x01 看到注入点是在标签中, 所以用上一题的方法是不会被解析的, 故需要去构造…

MySQL_索引

索引概述 简介 索引&#xff08;index&#xff09;是帮助MySQL高效获取数据的数据结构&#xff08;有序&#xff09;。在数据之外&#xff0c;数据库系统还维护着满足特定查找算法的数据结构&#xff0c;这些数据结构以某种方式引用&#xff08;指向&#xff09;数据&#xff…

OKR之剑·实战篇04:OKR执行过程优化的那些关键事

作者&#xff1a;vivo 互联网平台产品研发团队 本文是《OKR 之剑》系列之实战第 4 篇——OKR执行过程不是一成不变的&#xff0c;团队和个人在执行中不断优化执行的具体行动&#xff0c;保障OKR的高效执行。 前言 “言治骨角者&#xff0c;既切之而复磋之&#xff1b;治玉石者…

vue axios post 请求415、400、500、404报错时

vue axios post 请求415 415错误的解释&#xff0c;服务器无法处理请求附带的媒体格式。 解决方式&#xff1a; 后端参数使用了RequestBody注解进行绑定&#xff0c;用了这个注解进行数据绑定&#xff0c;只能接受数据类型为 Content-Type类型为application/json 1.后台修改&am…

notepad++ 中安装NppExec插件

一、何为NppExec简单的说&#xff0c;这个插件可以让用户在NPP中直接运行一些命令和程序&#xff0c;而不用启动这些命令和程序对应的实际工具或编译器。1. NppExec是...NppExec是介于Notepad和外部工具/编译器之间的一个中间件。它允许用户在NPP中直接运行这些工具/编译器。Np…

智能管理PoE交换机

随着网络化信息化的快速发展&#xff0c;以太网供电&#xff08;PoE&#xff09;的优势逐渐被大家所熟知。只需要一根网线&#xff0c;PoE在给网络设备供电的同时还能传输数据&#xff0c;免布线&#xff0c;节省成本和空间&#xff0c;设备可随意移动&#xff0c;系统部署灵活…

TCP/IP网络编程——域名及网络地址

完整版文章请参考&#xff1a; TCP/IP网络编程完整版文章 文章目录第 8 章 域名及网络地址8.1 域名系统8.1.1 什么是域名8.1.2 DNS 服务器8.2 IP地址和域名之间的转换8.2.1 程序中有必要使用域名吗&#xff1f;8.2.2 利用域名获取IP地址第 8 章 域名及网络地址 8.1 域名系统 …

重建大师可以实现识别地表树木吗?对数据格式有什么要求?

目前重建大师5.0具备自动单体化与切割单体化功能&#xff0c;在三维重建的过程中就可自动识别地表树木、建筑。 数据格式的话&#xff0c;目前是需要重建大师生产的倾斜模型数据&#xff0c;其他软件生产的模型暂不支持。重建大师目前并不是直接对模型数据进行深度学习识别&am…

Node.js包和模块的区别在哪儿

在Node.js 中&#xff0c;会将某个独立的功能封装起来&#xff0c;用于发布、更新、依赖管理和进行版本控制。Nodejs 根据CommonJS规范实现了包机制&#xff0c;开发了NPM包管理工具&#xff0c;用来解决包的发布和获取需求。 Node.js的包和模块并没有本质的不同&#xff0c;包…

详解linux中网络的几种模式:NAT,网桥,以及静态IP的配置和主机名

NAT模式 NAT就是网络地址转换&#xff0c;虚拟机和主机构建一个专有网络&#xff0c;通过NAT进行设备IP的转换&#xff0c;虚拟机通过共享主机的IP访问外界网络&#xff0c;但外部网络无法访问虚拟机。构建出的子网一般是WNET8. 网桥模式 也叫桥接模式&#xff0c;虚拟机直接…