深度学习基础代码学习

news/2025/3/12 17:38:44/文章来源:https://www.cnblogs.com/archer233/p/18768096

学习网址

1. 单个神经元

技术要点

  • 单个神经元即线性单元,对输入进行加权求和并通过激活函数进行处理。
  • 用于模拟简单线性关系,验证基础神经元的工作原理。

代码示例

import numpy as np
from keras.models import Sequential
from keras.layers import Dense# 构造训练数据:y = 2x + 1
X = np.array([[0], [1], [2], [3], [4]])
y = 2 * X + 1# 建立单神经元模型(使用线性激活函数)
model = Sequential()
model.add(Dense(1, input_dim=1, activation='linear'))model.compile(optimizer='sgd', loss='mse')
model.summary()# 训练模型
model.fit(X, y, epochs=100, verbose=0)# 获取预测结果
predictions = model.predict(X)
print("预测结果:", predictions.flatten())

2. 深度神经网络

技术要点

  • 通过增加隐藏层构建深层神经网络,从而捕捉数据中的复杂非线性关系。
  • 使用 ReLU 激活函数和多层结构来提高模型拟合能力。

代码示例

import numpy as np
from keras.models import Sequential
from keras.layers import Dense# 构造示例数据:目标函数 y = x^2
X = np.linspace(-1, 1, 100).reshape(-1, 1)
y = X**2# 构建深层神经网络模型
model = Sequential()
model.add(Dense(64, input_dim=1, activation='relu'))
model.add(Dense(32, activation='relu'))
model.add(Dense(1, activation='linear'))model.compile(optimizer='adam', loss='mse')
model.summary()# 训练模型
model.fit(X, y, epochs=200, verbose=0)# 获取预测结果
predictions = model.predict(X)
print("预测结果(前10个):", predictions[:10].flatten())

3. 随机梯度下降 (SGD)

技术要点

  • 利用随机梯度下降(SGD)对模型参数进行迭代更新。
  • 观察使用 SGD 训练单神经元模型时参数的调整效果。

代码示例

import numpy as np
from keras.models import Sequential
from keras.layers import Dense
from keras.optimizers import SGD# 构造训练数据:y = 3x + 2
X = np.array([[0], [1], [2], [3], [4]])
y = 3 * X + 2# 建立单神经元模型
model = Sequential()
model.add(Dense(1, input_dim=1, activation='linear'))# 配置 SGD 优化器
sgd = SGD(learning_rate=0.01)
model.compile(optimizer=sgd, loss='mse')
model.summary()# 训练模型
model.fit(X, y, epochs=100, verbose=0)# 获取预测结果
predictions = model.predict(X)
print("SGD 训练后的预测结果:", predictions.flatten())

4. 过拟合与欠拟合

技术要点

  • 识别模型在训练过程中的过拟合和欠拟合问题。
  • 使用早停(Early Stopping)技术防止模型过拟合。

代码示例

import numpy as np
from keras.models import Sequential
from keras.layers import Dense
from keras.callbacks import EarlyStopping# 构造示例数据:目标函数 y = x^3,加上随机噪声
X = np.linspace(-1, 1, 100).reshape(-1, 1)
y = X**3 + np.random.normal(0, 0.05, X.shape)# 构建模型(高容量模型,容易过拟合)
model = Sequential()
model.add(Dense(128, input_dim=1, activation='relu'))
model.add(Dense(64, activation='relu'))
model.add(Dense(1, activation='linear'))model.compile(optimizer='adam', loss='mse')
model.summary()# 设置早停回调,监控损失值,耐心值为 10
early_stop = EarlyStopping(monitor='loss', patience=10)# 训练模型
history = model.fit(X, y, epochs=500, verbose=0, callbacks=[early_stop])
print("训练结束时的轮次数:", len(history.history['loss']))# 获取预测结果
predictions = model.predict(X)
print("预测结果(前10个):", predictions[:10].flatten())

5. Dropout 与 Batch Normalization

技术要点

  • 使用 Dropout 层随机丢弃部分神经元,降低模型复杂度并防止过拟合。
  • 利用 Batch Normalization 层稳定训练过程,加速模型收敛。

代码示例

import numpy as np
from keras.models import Sequential
from keras.layers import Dense, Dropout, BatchNormalization# 构造示例数据:目标函数 y = sin(2πx),加上噪声
X = np.linspace(-1, 1, 200).reshape(-1, 1)
y = np.sin(2 * np.pi * X) + np.random.normal(0, 0.1, X.shape)# 构建带有 Dropout 与 Batch Normalization 的模型
model = Sequential()
model.add(Dense(64, input_dim=1, activation='relu'))
model.add(BatchNormalization())
model.add(Dropout(0.5))
model.add(Dense(32, activation='relu'))
model.add(BatchNormalization())
model.add(Dropout(0.5))
model.add(Dense(1, activation='linear'))model.compile(optimizer='adam', loss='mse')
model.summary()# 训练模型
model.fit(X, y, epochs=200, verbose=0)# 获取预测结果
predictions = model.predict(X)
print("添加 Dropout 与 Batch Normalization 后预测结果(前10个):", predictions[:10].flatten())

6. 二分类问题

技术要点

  • 构建二分类模型,采用 Sigmoid 激活函数和二元交叉熵损失函数。
  • 对生成的数据进行训练,并评估模型在测试集上的表现。

代码示例

import numpy as np
from keras.models import Sequential
from keras.layers import Dense
from sklearn.model_selection import train_test_split# 构造二分类示例数据:生成随机数据并依据简单规则划分类别
np.random.seed(42)
X = np.random.randn(1000, 20)
y = (np.sum(X, axis=1) > 0).astype(int)# 划分训练集与测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 构建二分类模型
model = Sequential()
model.add(Dense(64, input_dim=20, activation='relu'))
model.add(Dense(32, activation='relu'))
model.add(Dense(1, activation='sigmoid'))model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
model.summary()# 训练模型
model.fit(X_train, y_train, epochs=50, batch_size=32, verbose=0)# 模型评估
loss, accuracy = model.evaluate(X_test, y_test, verbose=0)
print("二分类模型测试集准确率:", accuracy)

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何利用进销存系统,实现批次和保质期管理?

现在做食品、药品、化妆品、生鲜等行业,批次和保质期管理真是个大难题。 很多老板都遇到过这些问题:批次号乱七八糟 库存管理混乱 出问题找不到源头 人工管理容易出错这些问题,不仅让你亏钱,还可能让客户投诉、被市场监管盯上,甚至面临罚款。 怎么办?——用进销存系统!今…

Android的页面跳转

通过在antivity_xml设置按钮并添加属性 : <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width=&qu…

第1个服务-定时任务

第1个服务-定时任务 ​ 使用服务的流程: 部署,配置,优化/注意事项,排障,其他(监控,备份,日志,统一认证) ​ 定时任务格式配置 ​ 定时任务案例 ​ 同步时间 备份 终极挑战: 通过脚本取出系统指标,通过邮件发送出去 ​ 定时任务箴言 1.概述定时任务:用于执行在Linux…

第 3 课 - nRF Connect SDK 应用程序的元素 - 配置文件

根据开发者学院的描述,本节课程主要是了解NCS应用程序的结构,了解它们彼此之间的关系以及他们之间如何相互作用。 其中一些概念性的内容需要看官方的描述,我这里只对主要内容做一些总结。最小应用程序文件结构 app/ |-- CMakeLists.txt |-- Kconfig |-- prj.conf |-- <bo…

牛客题解 | 计算矩阵的特征值

牛客题库题解题目 题目链接 矩阵的特征值是指矩阵在某个方向上的拉伸倍数,数学表达式为: \[A \times v = \lambda \times v \]其中,\(A\) 为原矩阵,\(v\) 为特征向量,\(\lambda\) 为特征值。 在数学上,通常求解特征方程来求解特征值: \[det(A - \lambda I) = 0 \]但是,…

光伏龙头出海记:正泰新能易路如何用数字化HR破解全球化用工合规困局

2025开年,全球光伏领域组件供应商龙头企业——正泰新能科技股份有限公司(以下简称“正泰新能”)与易路人力资源科技(以下简称“易路”)合作携手,通过高效、智能、合规的HR数字化解决方案,拓展土耳其乃至全球的光伏市场,促进全球能源转型下的行业发展与技术创新。2025开…

Qt/C++音视频开发82-系统音量值获取和设置/音量大小/静音

一、前言 在音视频开发中,音量的控制分两块,一个是控制播放器本身的音量,绝大部分场景都是需要控制这个,这个不会影响系统音量的设置。还有一种场景是需要控制系统的音量,因为播放器本身的音量是在系统音量的基础上控制的,也就是系统音量30%,意味着播放器最大的音量也是…

信息资源管理综合题之“四个的组织层次”

一、一个组织的运行一般包含战略层、管理层、知识层和操作层四个不同层次的内容,按照信息支持的不同层次,组织中信息系统可以分为六种不同类型,请将下表中序号(1)~(12)所对应的每种系统的中文名称及其对应的典型功能填写在答题卡相应位置处二、答案经理支持系统 长期销售…

如何在 Windows 上实现免密登录 Linux 服务器?

一、环境准备本地系统:Windows 10/11(需启用 OpenSSH 客户端)远程服务器:任意 Linux 发行版(需开启 SSH 服务)工具:系统自带 PowerShell 或 Git Bash(推荐)二、操作步骤 步骤 1:在 Windows 上生成 SSH 密钥对打开 PowerShell 或 Git Bash按 Win + S 搜索 "Power…

Cartesia 升级 TTS 模型,可在音频中无缝填充内容;索尼 AI 游戏角色原型:结合语音与动画,与玩家实时对话丨日报

开发者朋友们大家好:这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE(Real-Time Engagement) 领域内「有话题的 技术 」、「有亮点的 产品 」、「有思考的 文章 」、「有态度的 观点 」、「有看点的 活动 」,但内容仅代表编辑…

NocoBase vs OutSystems:低代码平台,开源还是闭源?

开源 vs. 闭源,哪个低代码平台更适合你?NocoBase vs OutSystems 全面对比,揭示核心功能、成本和扩展性,帮你做出最佳选择!原文链接:https://www.nocobase.com/cn/blog/nocobase-vs-outsystems 引言 我在之前已经写过几篇产品深度对比文章,欢迎感兴趣的朋友前往阅读。Noc…

英格索兰/鑫磊/阿特拉斯空压机数据采集联网远程监控方案温湿度露点

RS132ie-A7.5(英格索兰)RS132ie-A7.5(英格素兰)XLPM175A-IID(鑫磊)GA132-8.5(阿特拉斯)GA132-8.5(阳牛)RS132ie-A7.5(英格索兰)XPM175A-IID(鑫磊)RS132ie-A7.5(英格索兰XLPHI7SA IID (套名)RS1321e-A7.5(英格系兰)XPU175A IID美号RS132ie-A7.5(大格索)RS1321e-A7.5(英格索二RS1…