千家信息网

Keras库如何安装使用

发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,本篇内容介绍了"Keras库如何安装使用"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!安装使用Ana
千家信息网最后更新 2026年11月04日Keras库如何安装使用

本篇内容介绍了"Keras库如何安装使用"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

安装

使用Anaconda的conda install就可以安装Keras库:

conda install keras

该命令也会立即帮你安装好相关依赖。

后端配置

Keras 可以使用多个可用库之一作为其后端,这是处理低级操作(例如张量)的部分。我们将使用 TensorFlow,这是默认设置。

首先,我们将稍微调整 TensorFlow 的配置。具体来说,我们将allow_growth选项设置为 true,这允许 TensorFlow 动态增加使用的 GPU 内存,而不是预先分配所有内容。如果我们不这样做,TensorFlow 可能会尝试分配太多内存,导致你的 GPU 会立即耗尽内存(对我来说确实如此)。为此,请把以下代码放在文件的开头:

如果您的后端是 TensorFlow 1.x:

from keras.backend.tensorflow_backend import set_sessionimport tensorflow as tfconfig = tf.ConfigProto()config.gpu_options.allow_growth = Trueset_session(tf.Session(config=config))

对于 TensorFlow 2.x,你必须set_memory_growth设置为你的 GPU调用该函数。你可以在tf.config.experimental.set_memory_growth文档中阅读更多关于这背后的细节。

怎么查看你所拥有的版本?可以通过conda list来查看您的 TensorFlow 版本。即便使用相同的 Anaconda 安装命令,例如我在一台计算机上安装了 1.13.1,在另一台上安装了 2.1.0。

如果你想强制 Keras 使用你的 CPU 而不是你的 GPU,请在第一次 Keras import 之前添加:

import osos.environ['CUDA_VISIBLE_DEVICES'] = '-1'

虽然这样一来比在 GPU 上慢很多,但如果你没有足够的多 GPU 内存,你还真得考虑一下这样做。

使用 Keras 进行图像分类

我们将使用英特尔图像分类数据集演示用于图像分类的 Keras 。该数据集包含六个类别的图像,分为六个不同的目录,这非常方便,因为 Keras 提供了处理该格式数据的内置功能。

虽然你不用过多担心神经网络背后的数学问题,但你还需要对此有足够的理解,因为你才能准确指定你的模型由哪些层组成。

Keras 提供的模型之一是顺序模型,即一堆层。创建顺序模型和添加层非常简单:

from keras.models import Sequentialmodel = Sequential()model.add(layer_one)model.add(layer_two)# ...

以下是我们的模型用于图像分类的样子:

from keras.models import Sequentialfrom keras.layers import Conv2D, MaxPooling2Dfrom keras.layers import Dropout, Flatten, Densefrom keras.layers.normalization import BatchNormalizationmodel = Sequential()model.add(Conv2D(32, kernel_size=(3, 3), activation="relu", input_shape=(150, 150, 3))) # our images are 150*150model.add(MaxPooling2D(pool_size=(2, 2)))model.add(BatchNormalization())model.add(Conv2D(64, kernel_size=(3, 3), activation="relu"))model.add(MaxPooling2D(pool_size=(2, 2)))model.add(BatchNormalization())model.add(Conv2D(128, kernel_size=(3, 3), activation="relu"))model.add(MaxPooling2D(pool_size=(2, 2)))model.add(BatchNormalization())model.add(Flatten())model.add(Dense(128, activation="relu"))model.add(Dropout(0.15))model.add(Dense(64, activation="relu"))model.add(Dense(6, activation="softmax"))

神经网络模型的构建超出了本模块的范围,但简而言之:卷积层的重复模式(由于模式变得更复杂,过滤器数量越来越多)、最大池化层和批处理归一化通常用作图像分类问题的第一步。该步骤的输出是多维的,我们将其展平为具有展平层的一维向量。我们以几个密集连接的层结束,中间有一个 dropout 层,以帮助对抗过度拟合。最后一层必须输出一个包含六个元素的向量,因为我们有六个类别。

接下来,我们编译模型,这意味着我们对其进行配置以进行训练:

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

我们的损失函数sparse_categorical_crossentropy非常适合分类问题,而类别之间没有重叠。有关损失函数的完整讨论,请参阅Keras 文档。我们正在使用 Adam 优化器。可以在相关文档中找到优化器的完整列表。并metrics指定模型在训练和测试期间评估的内容。

拟合模型

现在我们有了模型的结构,我们可以将它拟合到我们的数据集。

from keras.preprocessing.image import ImageDataGeneratordatagen = ImageDataGenerator(validation_split=0.2)train_generator =     datagen.flow_from_directory("intel-images/seg_train/seg_train",     batch_size=32, target_size=(150,150), class_mode="sparse",     subset="training")validation_generator =     datagen.flow_from_directory("intel-images/seg_train/seg_train",     batch_size=32, target_size=(150, 150), class_mode="sparse",     subset="validation")model.fit_generator(train_generator, epochs=40,                     validation_data=validation_generator)

(如果你想要以较低的准确度更快地完成该过程,请自定义减少 epoch 的数量,尤其是在你使用 CPU 的情况下。40 个 epoch 需要相当长的时间。)

根据 Keras 文档,这就是 an 的ImageDataGenerator作用:

使用实时数据增强生成批量张量图像数据。数据将被循环(分批)。

我们的例子没有做任何数据增强。稍后我们将介绍该功能。

在前面的代码中,validation_split=0.2意味着我们将使用 20% 的训练集进行验证。由于数据集只有一个训练集和一个测试集,我们必须使用训练集的一个子集作为验证集。

flow_from_directory 是一个简洁的内置函数,非常适合像我们这样的数据集结构:每个类别的子目录。

class_mode="sparse" 意味着我们正在处理一维整数标签。

fit_generatorImageDataGenerator在我们指定的多个时期中将模型拟合到。

测试模型

训练完成后,我们可以用evaluate_generator函数测试模型。就像fit_generator,它需要一个生成器作为参数。我们可以为我们的测试数据创建一个,类似于我们为训练数据所做的:

test_datagen = ImageDataGenerator()test_generator =     datagen.flow_from_directory(        "intel-images/seg_test/seg_test",         target_size=(150,150), class_mode="sparse")print(model.evaluate_generator(test_generator))

这将为我们的示例返回一个包含两个值的数组:损失和准确性。(你还可以通过查看model.metrics_names值来检查。)

我的准确率为 81.7%,这对于非平凡数据集上的相对简单模型来说还不错。

生成预测

你现在可以使用该model.predict方法对任何图像生成预测。此方法将 NumPy 图像数组作为输入,其中图像也是形状为 (150, 150, 3) 的 NumPy 数组。要对一张图像进行预测,你可以执行以下操作:

import skimage.ioimport numpy as npmodel.predict(np.expand_dims(skimage.io.imread("file.jpg"), axis=0))

skimage.io.imread将读取图像expand_dims并将另一个维度添加到数组。输出是一个预测数组,其中每个预测是一个值数组,指示每个类别的概率。

数据增强

数据增强是指根据现有训练集生成新的训练数据,以提高准确性和泛化性并减少过度拟合。

对于图像,数据增强可以通过对图像进行多种变换来完成:旋转、翻转、缩放、移位、剪切等。

ImageDataGenerator使这变得容易。要将数据增强应用于我们的模型,只需更改两行代码。

首先,ImageDataGenerator使用更多参数实例化,指定我们想要的转换:

Python复制代码

datagen = ImageDataGenerator(rotation_range=30,                              horizontal_flip=True,                              zoom_range=0.2,                              shear_range=0.2)

还有更多的可能性--请参阅图像预处理文档以获取完整的参数列表。

第二行是fit_generator电话。这个函数有可选steps_per_epoch和validation_steps参数,我们可以离开了前面,因为我们有训练样本的固定数量。通过数据增强,我们可能有更多的训练样本,因此我们必须指定要使用的数量。如果我们不这样做,该函数将只使用我们固定大小的样本集。一个步骤对应于一批给定的batch_size。

model.fit_generator(train_generator, epochs=40,                     validation_data=validation_generator,                     steps_per_epoch=1600, validation_steps=32)

同样,如果您希望该过程更快,请随时减少 epoch 数或步骤数。经过 2-3 小时的训练,我的准确率为 85.5%。

保存和恢复模型

Keras 允许你以 HDF5 格式保存经过训练的模型:

model.save("images_model.h6")

恢复模型也是一行:

import keras.modelsmodel = keras.models.load_model("images_model.h6")

这需要h6py软件包,如果你使用的是conda install. 如果没有,请在 Jupyter Notebook 单元中运行此 pip 命令:

Python复制代码

!pip install --upgrade h6py

"Keras库如何安装使用"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

数据 模型 图像 训练 函数 数组 更多 分类 代码 文档 类别 测试 生成 内存 内容 参数 数量 输出 可以通过 命令 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 广州万易互联网科技有限公司 互联网科技公司税收优惠 关于新基建和互联网科技 北京互联网科技公司 互联网科技素材视频竖屏 无锡溥仪互联网科技有限公司 成都仁贤领冠互联网科技有限公司 互联网科技公司需要的职位 中盈科技互联网信息有限公司 互联网科技实习生岗位职责 小米互联网科技园设置 互联网企业和科技型企业 中国航天科技大学国际工业互联网 燊美集互联网科技有限公司 互联网时代的科技公司 锡山区互联网智能科技产品供应 吉林省码上互联网科技电话 万物互联网智能科技 科技和互联网行业的特点 上海互联网科技园景观 深圳互联网络科技有限公司 伴你行互联网科技有限公司 太原新华互联网科技学校怎么样 厦门千工互联网科技有限公司 互联网方面的科技前沿 半导体行业属于互联网高科技类吗 广东鹅鹅鹅互联网科技有限公司 广西科技产业互联网是什么 科技信息时代互联网发展 亚光科技低轨卫星互联网
0