Python Keras:打造深度学习模型的利器

news/2024/7/22 12:18:17/文章来源:https://blog.csdn.net/GitHub_miao/article/details/139228113

1f11c33bb83b81dab7ee3fedb215e9d2.png

更多Python学习内容:ipengtao.com

Keras是一个高级神经网络API,由纯Python编写并能够运行在TensorFlow、Theano和CNTK之上。Keras以简洁和可扩展性为目标,使研究人员能够快速实验,并能在生产环境中轻松部署。无论是深度学习的新手还是经验丰富的研究人员,Keras都能快速构建和训练深度学习模型。本文将详细介绍Keras库的安装、主要功能、基本操作、高级功能及其实践应用,并提供丰富的示例代码。

安装

Keras可以通过pip进行安装。确保Python环境已激活,然后在终端或命令提示符中运行以下命令:

pip install keras

如果打算使用TensorFlow作为后端,还需要安装TensorFlow:

pip install tensorflow

主要功能

  1. 模块化:所有的模型、层、激活函数、损失函数和优化器都是独立的模块,可以组合使用。

  2. 极简主义:提供简单一致的API,极大减少开发和调试时间。

  3. 易扩展性:可以轻松添加自定义的层、损失函数、优化器等。

  4. 多后端支持:可以在TensorFlow、Theano和CNTK后端上运行。

基本操作

构建简单的神经网络

使用Keras构建一个简单的神经网络模型,以下示例展示了如何构建一个用于分类任务的全连接神经网络:

from keras.models import Sequential
from keras.layers import Dense# 创建一个顺序模型
model = Sequential()# 添加输入层和第一个隐藏层
model.add(Dense(units=64, activation='relu', input_dim=100))# 添加第二个隐藏层
model.add(Dense(units=64, activation='relu'))# 添加输出层
model.add(Dense(units=10, activation='softmax'))# 编译模型
model.compile(loss='categorical_crossentropy',optimizer='sgd',metrics=['accuracy'])# 打印模型概况
model.summary()

训练模型

可以使用模型的fit方法训练模型,以下示例展示了如何使用训练数据和验证数据进行训练:

# 生成虚拟数据
import numpy as npx_train = np.random.random((1000, 100))
y_train = np.random.randint(10, size=(1000, 1))# 将标签转换为分类编码
y_train = keras.utils.to_categorical(y_train, num_classes=10)# 训练模型
model.fit(x_train, y_train, epochs=10, batch_size=32, validation_split=0.2)

评估模型

可以使用模型的evaluate方法在测试数据上评估模型性能:

# 生成虚拟测试数据
x_test = np.random.random((100, 100))
y_test = np.random.randint(10, size=(100, 1))
y_test = keras.utils.to_categorical(y_test, num_classes=10)# 评估模型
score = model.evaluate(x_test, y_test, batch_size=32)
print(f'Test loss: {score[0]} / Test accuracy: {score[1]}')

高级功能

使用卷积神经网络(CNN)

Keras支持构建卷积神经网络(CNN),以下示例展示了如何构建一个简单的CNN模型:

from keras.models import Sequential
from keras.layers import Conv2D, MaxPooling2D, Flatten, Dense# 创建一个顺序模型
model = Sequential()# 添加卷积层
model.add(Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)))# 添加池化层
model.add(MaxPooling2D(pool_size=(2, 2)))# 添加扁平化层
model.add(Flatten())# 添加全连接层
model.add(Dense(128, activation='relu'))# 添加输出层
model.add(Dense(10, activation='softmax'))# 编译模型
model.compile(loss='categorical_crossentropy',optimizer='adam',metrics=['accuracy'])# 打印模型概况
model.summary()

使用循环神经网络(RNN)

Keras也支持构建循环神经网络(RNN),以下示例展示了如何构建一个简单的RNN模型:

from keras.models import Sequential
from keras.layers import SimpleRNN, Dense# 创建一个顺序模型
model = Sequential()# 添加循环层
model.add(SimpleRNN(32, input_shape=(10, 64)))# 添加全连接层
model.add(Dense(10, activation='softmax'))# 编译模型
model.compile(loss='categorical_crossentropy',optimizer='adam',metrics=['accuracy'])# 打印模型概况
model.summary()

使用预训练模型

Keras提供了一些预训练的模型,可以用于迁移学习和特征提取。以下示例展示了如何使用预训练的VGG16模型:

from keras.applications.vgg16 import VGG16
from keras.models import Model
from keras.layers import Dense, Flatten# 加载预训练的VGG16模型,不包括顶层的全连接层
base_model = VGG16(weights='imagenet', include_top=False, input_shape=(224, 224, 3))# 添加自定义的全连接层
x = base_model.output
x = Flatten()(x)
x = Dense(1024, activation='relu')(x)
predictions = Dense(10, activation='softmax')(x)# 创建新的模型
model = Model(inputs=base_model.input, outputs=predictions)# 冻结VGG16的所有卷积层
for layer in base_model.layers:layer.trainable = False# 编译模型
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])# 打印模型概况
model.summary()

实践应用

图像分类

使用Keras进行图像分类任务,以下示例展示了如何构建一个用于CIFAR-10数据集的CNN模型:

from keras.datasets import cifar10
from keras.utils import to_categorical
from keras.models import Sequential
from keras.layers import Conv2D, MaxPooling2D, Flatten, Dense# 加载CIFAR-10数据集
(x_train, y_train), (x_test, y_test) = cifar10.load_data()# 数据归一化
x_train = x_train.astype('float32') / 255
x_test = x_test.astype('float32') / 255# 将标签转换为分类编码
y_train = to_categorical(y_train, 10)
y_test = to_categorical(y_test, 10)# 构建CNN模型
model = Sequential()
model.add(Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3)))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dense(10, activation='softmax'))# 编译模型
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])# 训练模型
model.fit(x_train, y_train, epochs=10, batch_size=64, validation_split=0.2)# 评估模型
score = model.evaluate(x_test, y_test, batch_size=64)
print(f'Test loss: {score[0]} / Test accuracy: {score[1]}')

文本分类

使用Keras进行文本分类任务,以下示例展示了如何构建一个用于IMDB数据集的LSTM模型:

from keras.datasets import imdb
from keras.preprocessing import sequence
from keras.models import Sequential
from keras.layers import Embedding, LSTM, Dense# 加载IMDB数据集
max_features = 20000
max_len = 100
(x_train, y_train), (x_test, y_test) = imdb.load_data(num_words=max_features)# 数据填充
x_train = sequence.pad_sequences(x_train, maxlen=max_len)
x_test = sequence.pad_sequences(x_test, maxlen=max_len)# 构建LSTM模型
model = Sequential()
model.add(Embedding(max_features, 128, input_length=max_len))
model.add(LSTM(128))
model.add(Dense(1, activation='sigmoid'))# 编译模型
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])# 训练模型
model.fit(x_train, y_train, epochs=10, batch_size=32, validation_split=0.2)# 评估模型
score = model.evaluate(x_test, y_test, batch_size=32)
print(f'Test loss: {score[0]} / Test accuracy: {score[1]}')

总结

Keras库为Python开发者提供了一个强大且易于使用的深度学习工具。它通过简洁的API和模块化设计,使得构建和训练神经网络模型变得简单高效。无论是进行图像分类、文本分类,还是使用卷积神经网络(CNN)、循环神经网络(RNN)等复杂模型,Keras都能提供强大的支持。此外,Keras的易扩展性和多后端支持,使得它在研究和生产环境中都非常适用。通过本文的详细介绍和丰富的示例代码,相信已经掌握了Keras的基本使用方法和高级功能。希望在实际项目中能充分利用Keras,提高深度学习模型的开发效率和性能。

如果你觉得文章还不错,请大家 点赞、分享、留言 ,因为这将是我持续输出更多优质文章的最强动力!

更多Python学习内容:ipengtao.com


如果想要系统学习Python、Python问题咨询,或者考虑做一些工作以外的副业,都可以扫描二维码添加微信,围观朋友圈一起交流学习。

ac2a46574e43832dee03852742f20e13.gif

我们还为大家准备了Python资料和副业项目合集,感兴趣的小伙伴快来找我领取一起交流学习哦!

c665d79cda62fe29853362e2062348d8.jpeg

往期推荐

Python 中的 iter() 函数:迭代器的生成工具

Python 中的 isinstance() 函数:类型检查的利器

Python 中的 sorted() 函数:排序的利器

Python 中的 hash() 函数:哈希值的奥秘

Python 中的 slice() 函数:切片的利器

Python 的 tuple() 函数:创建不可变序列

点击下方“阅读原文”查看更多

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

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

相关文章

智慧水坝:科技变革的里程碑

在曾经的水利工程领域,水坝只是为了水资源的调配和控制,提供一定的安全储备。然而,随着现代科技的不断发展,传统的水坝已经不再是单一的水源控制工程,而是变成了一个充满智慧与创新的生态系统。智慧水坝的概念已经超越…

【重制版】Unity Meta Quest 一体机开发(一):前期准备,Meta XR SDK导入和环境配置,配置玩家物体

文章目录 📕教程说明📕Meta XR SDK 介绍📕前期准备⭐开启开发者模式⚡在 Meta 官网申请开发者⚡在 Meta Quest 手机 APP 开启开发者 ⭐电脑需要下载的软件⚡Meta Quest Link(以前叫做Oculus PC客户端)⚡Oculus ADB Dri…

工业级3D开发引擎HOOPS:创新与效率的融合!

在当今这个技术日新月异的时代,3D技术已成为推动各行各业发展的重要力量。从工程设计到游戏开发,从虚拟现实到增强现实,3D技术的应用无处不在,它极大地丰富了我们的生活和工作。而在这样的背景下,HOOPS作为一个强大的3…

想玩转Python爬虫?这些知识点你必须掌握!

想玩转Python爬虫?这些知识点你必须掌握! Python爬虫作为数据获取的利器,吸引着越来越多的人学习。但想要真正掌握这门技术,仅仅停留在“会用”的阶段是远远不够的。你需要建立一个系统的知识体系,才能在面对各种复杂情…

景源畅信:如何让抖音短视频标签越来越精准?

在数字媒体的海洋中,抖音短视频以其独特的魅力和高效的信息传递方式吸引了无数眼球。如何让这些短视频的标签变得更精准,是提高推荐质量、增强用户体验的关键问题。标签的精确度直接关系到内容能否触达感兴趣的用户,进而影响用户的留存率和平…

实现 Vue 标签页切换效果的组件开发

在本次开发中,我们将实现一个 Vue 组件,用于展示和切换标签页。 背景有移动动画效果 该组件将具有以下功能: 标签页左右滚动点击标签页切换内容关闭指定标签页支持多种标签页风格 以下是实现该组件的具体步骤: 创建 Vue 组件…

stream-并行流

定义 常规的流都是串行的流并行流就是并发的处理数据&#xff0c;一般要求被处理的数据互相不影响优点&#xff1a;数据多的时候速度更快&#xff0c;缺点&#xff1a;浪费系统资源&#xff0c;数据少的时候开启线程更耗费时间 模版 Stream<Integer> stream1 Stream.of…

Redis篇 String

String概念和set,get扩充 一. String类型的基本介绍二. String中set,get方法扩充 一. String类型的基本介绍 redis中所有的key都是字符串类型的,但是value的类型差异很大. redis中的字符串,直接就是二进制方式存储的,可以存储整数,二进制数据 文本数据,Json,xml还有音频等. 二.…

Unity 生成物体的几种方式

系列文章目录 unity工具 文章目录 系列文章目录前言&#x1f449;一、直接new的方式创建生成1-1.代码如下1-2. 效果图 &#x1f449;二、使用Instantiate创建生成&#xff08;GameObject&#xff09;2-1.代码如下2-2.效果如下图 &#x1f449;三.系统CreatePrimitive创建生成3…

C++ | Leetcode C++题解之第116题填充每个节点的下一个右侧节点指针

题目&#xff1a; 题解&#xff1a; class Solution { public:Node* connect(Node* root) {if (root nullptr) {return root;}// 从根节点开始Node* leftmost root;while (leftmost->left ! nullptr) {// 遍历这一层节点组织成的链表&#xff0c;为下一层的节点更新 next…

APM2.8飞控

ArduPilotMega 主控可应用于 固定翼、直升机、多旋翼、地面车辆 APM2.8飞控供电有两种 1.电流计供电&#xff0c; 2.带BEC&#xff08;稳压功能&#xff09;的电调供电 ArduPilotMega 内部的硬件结构图&#xff1a; 调试时&#xff0c;不要使用向导&#xff0c;由于向导功能不…

针对上两篇微信同声传译语音播报功能,又出现了坑

我又双叒叕来了&#xff0c;自己写的bug&#xff0c;跪着也要改完&#xff0c;我是真的服了 首先&#xff0c;我们来说说是什么问题吧 上一篇文章的这张图还记得吧&#xff0c;不记得的&#xff0c;我在下面贴出来了&#xff1b; 我们在长度大于300的时候&#xff0c;根据句号…

Docker(四) 文件和网络

1 Dockerfile 1.1 什么是Dockerfile Dockerfile是一个文本文件&#xff0c;包含一系列命令&#xff0c;这些命令用于在 Docker 镜像中自动执行操作。Dockerfile 定义了如何构建 Docker 镜像的步骤和所需的操作。 Dockerfile 中包含的命令可以设置和定制容器的环境&#xff0c;…

[每周一更]-(第98期):PHP版本的升级历程

文章目录 大致历程PHP/FI (PHP 1.0)PHP 2.0PHP 3.0PHP 4.0PHP 5.0PHP 5.3 - 5.6PHP 7.0PHP 7.1 - 7.4PHP 8.0PHP 8.1 - 8.2 参考 PHP&#xff0c;即“超文本预处理器”&#xff08;Hypertext Preprocessor&#xff09;&#xff0c;是广泛应用于web开发的服务器端脚本语言。自19…

泰迪智能科技携手深圳市龙华职业技术学校共建校企合作智能工作室

5月24日&#xff0c;深圳市龙华职业技术学校大数据与网络安全专业部部长叶小艳、大数据技术应用专业负责人赖玉凤莅临广东泰迪智能科技股份有限公司产教融合实训中心开展“泰迪深圳市龙华职业技术学校工作室签约仪式”活动。泰迪智能科技董事长张良均、中职事业部负责人李振林、…

PawSQL: 企业级SQL审核工具的新玩家

随着数据库应用在企业中的广泛使用&#xff0c;确保SQL代码质量的重要性日益凸显。现有的SQL审核工具很多&#xff0c;包括Yearning、goInception、Bytebase、爱可生的SQLE、云和恩墨的SQM等等&#xff0c;但是它们或者规则覆盖度、或者是在正确率等方面存在明显不足&#xff1…

矩阵区域和 ---- 二维前缀和

题目链接 题目: 分析: 题目的题意是:矩阵和的问题, 应该使用二维前缀和来解决 先预处理一个前缀和, 但是题目中下标是从0开始的, 为了不处理边界情况, 我么预处理出来的矩阵, 要从下标为1的位置开始, 所以前缀和矩阵的大小为m1 * n1预处理前缀和:dp[i][j] 表示: 从[1,1] 位置…

React 其他 Hooks

其他 Hooks useRef 可用于获取 DOM 元素 const ScrollRef useRef(null)ScrollRef.current useContext &#xff08;先回顾一下之前的 Context 知识&#xff0c;借用之前 ppt 和源码&#xff09; Hooks 中使用 useContext 来获取 context 的值 // 父组件创建 contextexpor…

使用YOLOv9训练和测试自己的数据集

任务&#xff1a;检测舌头上的裂纹和齿痕 已经有了labelme标注的数据集&#xff0c;并且转为了coco格式 参考&#xff1a; 详细&#xff01;正确&#xff01;COCO数据集&#xff08;.json&#xff09;训练格式转换成YOLO格式&#xff08;.txt&#xff09;_coco数据集的train…

多态(难的起飞)

注意 virtual关键字&#xff1a; 1、可以修饰原函数&#xff0c;为了完成虚函数的重写&#xff0c;满足多态的条件之一 2、可以菱形继承中&#xff0c;去完成虚继承&#xff0c;解决数据冗余和二义性 两个地方使用了同一个关键字&#xff0c;但是它们互相一点关系都没有 虚函…