Kaggle——Deep Learning(使用 TensorFlow 和 Keras 为结构化数据构建和训练神经网络)

news2024/10/7 14:32:18

 1.单个神经元

创建一个具有1个线性单元的网络

#线性单元
from tensorflow import keras
from tensorflow.keras import layers
#创建一个具有1个线性单元的网络
model=keras.Sequential([
    layers.Dense(units=1,input_shape=[3])
])

2.深度神经网络

 构建序列模型

#构建序列模型
from tensorflow import keras
from tensorflow.keras import layers
model=keras.Sequential([
    #隐藏的 ReLU 层
    layers.Dense(unit=4,activation='relu',input_shape=[2]),
    layers.Dense(unit=3,activation='relu'),
    #线性输出层
    layers.Dense(units=1),
])

 

 重写代码以使用激活层

#重写代码以使用激活层
model = keras.Sequential([
    layers.Dense(units=32, input_shape=[8]),
    layers.Activation('relu'),
    layers.Dense(units=32),
    layers.Activation('relu'),
    layers.Dense(1),
])

 3.梯度下降

深度学习中使用的几乎所有优化算法都属于随机梯度下降算法。它们是分步训练网络的迭代算法。训练的一个步骤如下:抽取一些训练数据,并通过网络运行以进行预测。测量预测值与真实值之间的损失。最后,朝着使损失更小的方向调整权重。

一个“损失函数”,用于衡量网络预测的好坏。
一个“优化器”,可以告诉网络如何改变其权重。

#随机梯度下降
#一个“损失函数”,用于衡量网络预测的好坏。
#一个“优化器”,可以告诉网络如何改变其权重
#添加损失和优化器¶
#定义模型后,可以使用模型的编译方法添加损失函数和优化器:
model.compile(
    optimizer="adam",
    loss="mae",
)

开始训练:告诉 Keras 每次向优化器提供 256 行训练数据(batch_size),并在整个数据集中执行 10 次。 

#开始训练:告诉 Keras 每次向优化器提供 256 行训练数据(batch_size),并在整个数据集中执行10次(epoch)。
history=model.fit(
    X_train,y_train,
    validation_data=(X_vaild,y_vaild),
    batch_size=256,
    epochs=10,
)

用图表的形式查看损失 

#用图表的形式查看损失
import pandas as pd
#将训练历史转换为数据框
history_df=pd.DataFrame(history.history)
#使用 Pandas 原生的 plot 方法
history_df['loss'].plot();

 

 4.过拟合和欠拟合

 

使网络更深(添加更多层)来增加网络的容量。
更宽的网络更容易学习更多的线性关系,而更深的网络则更倾向于非线性关系。

#过拟合和欠拟合
#使网络更深(添加更多层)来增加网络的容量。
#更宽的网络更容易学习更多的线性关系,而更深的网络则更倾向于非线性关系。
model = keras.Sequential([
    layers.Dense(16, activation='relu'),
    layers.Dense(1),
])

wider = keras.Sequential([
    layers.Dense(32, activation='relu'),
    layers.Dense(1),
])

deeper = keras.Sequential([
    layers.Dense(16, activation='relu'),
    layers.Dense(16, activation='relu'),
    layers.Dense(1),
])

当模型过于热衷于学习噪声时,验证损失可能会在训练期间开始增加。
为了防止这种情况,我们可以在验证损失似乎不再减少时停止训练。
以这种方式中断训练称为提前停止。 

#模型过于热衷于学习噪声时,验证损失可能会在训练期间开始增加。
#为了防止这种情况,我们可以在验证损失似乎不再减少时停止训练。
#以这种方式中断训练称为提前停止。
from tensorflow.keras.callbacks import EarlyStopping
early_stopping = EarlyStopping(
    #视为改进的最小变化量
    min_delta=0.001, 
    #停止前要等待多少个 epoch
    patience=20, 
    restore_best_weights=True,
)

5. Dropout和批量标准化

添加 Dropout正则化

#添加 Dropout正则化
keras.Sequential([
    # ...
    #将 30% 的 dropout 应用到下一层
    layers.Dropout(rate=0.3), 
    layers.Dense(16),
    # ...
])

添加批量标准化 

#添加批量标准化
layers.Dense(16, activation='relu'),
layers.BatchNormalization(),

#或者
layers.Dense(16),
layers.BatchNormalization(),
layers.Activation('relu'),

Droupout和批量标准化 

#Droupout和批量标准化
from tensorflow import keras
from tensorflow.keras import layers
model = keras.Sequential([
    layers.Dense(1024, activation='relu', input_shape=[11]),
    layers.Dropout(0.3),
    layers.BatchNormalization(),
    layers.Dense(1024, activation='relu'),
    layers.Dropout(0.3),
    layers.BatchNormalization(),
    layers.Dense(1024, activation='relu'),
    layers.Dropout(0.3),
    layers.BatchNormalization(),
    layers.Dense(1),
])

6.二分类

 

#二分类
from tensorflow import keras
from tensorflow.keras import layers
model = keras.Sequential([
    layers.Dense(4, activation='relu', input_shape=[33]),
    layers.Dense(4, activation='relu'),    
    layers.Dense(1, activation='sigmoid'),
])

将交叉熵损失和准确度指标添加到模型中 

#将交叉熵损失和准确度指标添加到模型中
model.compile(
    optimizer='adam',
    loss='binary_crossentropy',
    metrics=['binary_accuracy'],
)

这个特定问题中的模型可能需要相当多的时期才能完成训练,因此我们将包含一个早期停止回调以方便使用。 

#这个特定问题中的模型可能需要相当多的时期才能完成训练,
#因此我们将包含一个早期停止回调以方便使用。
early_stopping = keras.callbacks.EarlyStopping(
    patience=10,
    min_delta=0.001,
    restore_best_weights=True,
)

 

 

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

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

相关文章

【vue3|第6期】如何正确地更新和替换响应式对象reactive

日期:2024年6月5日 作者:Commas 签名:(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释:如果您觉得有所帮助,帮忙点个赞,也可以关注我,我们一起成长;如果有不对的地方&#xff…

【Linux取经路】守护进程

文章目录 一、前台进程和后台进程二、Linux 的进程间关系三、setsid——将当前进程设置为守护进程四、daemon——设置为守护进程五、结语 一、前台进程和后台进程 Linux 中每一次用户登录都是一个 session,一个 session 中只能有一个前台进程在运行,键盘…

AppInventor2有没有删除后的撤销功能?

问:不小心删除了组件,能撤回吗? 答:界面(组件)设计界面,没有撤销功能。代码(逻辑)设计视图,可以使用 CtrlZ 撤销,CtrlY 反撤销。 界面设计没有撤…

搜索与图论:树的重心

搜索与图论&#xff1a;树的重心 题目描述参考代码 题目描述 输入样例 9 1 2 1 7 1 4 2 8 2 5 4 3 3 9 4 6输出样例 4参考代码 #include <cstring> #include <iostream> #include <algorithm>using namespace std;const int N 100010, M N * 2;int n, m…

JavaWeb_SpringBootWeb案例

环境搭建&#xff1a; 开发规范 接口风格-Restful&#xff1a; 统一响应结果-Result&#xff1a; 开发流程&#xff1a; 第一步应该根据需求定义表结构和定义接口文档 注意&#xff1a; 本文代码从上往下一直添加功能&#xff0c;后面的模块下的代码包括前面的模块&#xff0c…

新能源管理系统主要包括哪些方面的功能?

随着全球对可持续发展和环境保护的日益重视&#xff0c;新能源管理系统已成为现代能源领域的核心组成部分。这一系统不仅涉及对新能源的收集、存储和管理&#xff0c;还包括对整个能源网络进行高效、智能的监控和控制。以下是新能源管理系统主要包含的几方面功能&#xff1a; 一…

ESP32 Error creating RestrictedPinnedToCore

随缘记&#xff0c;刚遇到&#xff0c;等以后就可能不想来写笔记了。 目前要使用到音频数据&#xff0c;所以去用ESP-ADF&#xff0c;但在使用例程上出现了这个API有问题&#xff0c;要去打补丁。 但是我打补丁的时候git bash里显示not apply&#xff0c;不能打上。 网上看到…

谷歌账号的注册到使用GitHub

一、浏览器扩展 浏览器扩展谷歌学术 二、注册谷歌邮箱 https://support.google.com/accounts/answer/27441?hlzh-hans 1.打开无痕模式&#xff08;ctrlshiftn&#xff09; 2.输入网址 3.选择个人账号 4.填写信息&#xff08;随便填就行&#xff09; &#xff08;以上步骤有时…

FTP

文章目录 概述主动模式和被动模式的工作过程注意事项 概述 文件传输协议 FTP&#xff08;File Transfer Protocol&#xff09;在 TCP/IP 协议族中属于应用层协议&#xff0c;是文件传输标准。主要功能是向用户提供本地和远程主机之间的文件传输&#xff0c;尤其在进行版本升级…

【YOLOV8】2.目标检测-训练自己的数据集

Yolo8出来一段时间了,包含了目标检测、实例分割、人体姿态预测、旋转目标检测、图像分类等功能,所以想花点时间总结记录一下这几个功能的使用方法和自定义数据集需要注意的一些问题,本篇是第二篇,目标检测功能,自定义数据集的训练。 YOLO(You Only Look Once)是一种流行的…

基于element ui 城市选择之间的级联选择

通过el-select实现城市的级联选择效果如图所示 代码实现 <template><div><el-form :model"ruleForminfo"><el-form-item label"居住地址" required><el-col :span"6"><el-form-item ><el-select v-mode…

tsconfig.json和tsconfig.app.json文件解析(vue3+ts+vite)

tsconfig.json {"files": [],"references": [{"path": "./tsconfig.node.json"},{"path": "./tsconfig.app.json"}] }https://www.typescriptlang.org/tsconfig/#files files: 在这个例子中&#xff0c;files 数…

表格中附件的上传、显示以及文件下载#Vue3#后端接口数据

表格中附件的上传及显示#Vue3#后端接口数据 一、图片上传并显示在表格中实现效果&#xff1a; 表格中上传附件 代码&#xff1a; <!-- 文件的上传及显示 --> <template><!-- 演示地址 --><div class"dem-add"><!-- Search start -->…

手写节流throttle

节流throttle 应用场景 滚动事件监听scroll&#xff1a;例如监听页面滚动到底部加载更多数据时&#xff0c;使用节流技术减少检查滚动位置的频率&#xff0c;提高性能。鼠标移动事件mousemove&#xff1a;例如实现一个拖拽功能&#xff0c;使用节流技术减少鼠标移动事件的处理…

PHPStudy(xp 小皮)V8.1.1 通过cmd进入MySQL命令行模式

PHPStudy是一个PHP开发环境集成包&#xff0c;可用在本地电脑或者服务器上&#xff0c;该程序包集成最新的PHP/MySql/Apache/Nginx/Redis/FTP/Composer&#xff0c;一次性安装&#xff0c;无须配置即可使用。MySQL MySQL是一个关系型数据库管理系统&#xff0c;由瑞典 MySQL A…

MongoDB环境搭建

一.下载安装包 Download MongoDB Community Server | MongoDB 二、双击下载完成后的安装包开始安装&#xff0c;除了以下两个部分需要注意操作&#xff0c;其他直接next就行 三.可视化界面安装 下载MongoDB-compass&#xff0c;地址如下 MongoDB Compass Download (GUI) | M…

使用LeanCloud平台的即时通讯

LeanCloud 是领先的 Serverless 云服务&#xff0c;为产品开发提供强有力的后端支持&#xff0c;旨在帮助开发者降低研发、运营维护等阶段投入的精力和成本。 LeanCloud 整合了各项服务&#xff0c;让开发者能够聚焦在核心业务上&#xff0c;为客户创造更多价值。 *即时通讯 …

15、matlab绘图汇总(图例、标题、坐标轴、线条格式、颜色和散点格式设置)

1、plot()函数默认格式画图 代码&#xff1a; x0:0.1:20;%绘图默认格式 ysin(x); plot(x,y) 2、X轴和Y轴显示范围/axis()函数 代码&#xff1a; x0:0.1:20;%绘图默认格式 ysin(x); plot(x,y) axis([0 21 -1.1 1.1])%设置范围 3、网格显示/grid on函数 代码&#xff1a; …

设备上CCD功能增加(从接线到程序)

今天终于完成了一个上面交给我的一个小项目&#xff0c;给设备增加一个CCD拍照功能&#xff0c;首先先说明一下本次使用基恩士的CCD相机&#xff0c;控制器&#xff0c;还有软件&#xff08;三菱程序与基恩士程序&#xff09;。如果对你有帮助&#xff0c;欢迎评论收藏&#xf…

VMware Workstation中WinXP联网问题

我一直以为我的虚拟机上的XP没有联网 因为 蒙了半天&#xff0c;发现是因为这个网址打不开&#xff0c;不是没有网 太傻了 不如在cmd命令行中通过ping baidu.com来判断是否联网