news 2026/8/10 0:47:10

带Python的人工智能——深度学习

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
带Python的人工智能——深度学习

人工神经网络(ANN)是一种高效的计算系统,其核心主题借鉴了生物神经网络的类比。神经网络是机器学习的一种模型类型。在20世纪80年代中期和90年代初,神经网络取得了许多重要的架构进步。在本章中,你将深入了解深度学习,这是一种人工智能的方法。

深度学习源自数十年计算爆炸性增长,成为该领域的有力竞争者。因此,深度学习是一种特殊的机器学习,其算法灵感来源于人脑的结构和功能。

机器学习与深度学习

深度学习是当今最强大的机器学习技术。它之所以强大,是因为他们在学习如何解决问题的同时,学会了最佳的表达问题方式。深度学习与机器学习的比较如下 −

数据依赖

第一个区别点基于数据规模增加时DL和ML的性能。当数据量很大时,深度学习算法表现非常好。

机器依赖

深度学习算法需要高端机器才能完美运行。另一方面,机器学习算法也可以在低端设备上工作。

特征提取

深度学习算法可以提取高层特征并尝试从中学习。另一方面,专家需要识别机器学习提取的大部分特征。

执行时间

执行时间取决于算法中使用的众多参数。深度学习的参数比机器学习算法更多。因此,DL算法的执行时间,尤其是训练时间,远远超过机器学习算法。但深度学习算法的测试时间比机器学习算法短。

问题解决方法

深度学习从头到尾解决问题,而机器学习则采用传统的解决问题方式,即将其拆解为多个部分。

卷积神经网络(CNN)

卷积神经网络与普通神经网络相同,因为它们同样由具有可学习权重和偏差的神经元组成。普通神经网络忽略输入数据的结构,所有数据在输入网络前都会被转换为一维数组。该过程适用于常规数据,但如果数据包含图像,过程可能会繁琐。

CNN轻松解决了这个问题。它在处理图像时考虑了图像的二维结构,从而能够提取图像特有的属性。通过这种方式,CNN的主要目标是从输入层的原始图像数据过渡到输出层的正确类别。普通神经网络和CNN的唯一区别在于输入数据的处理方式和层的类型。

CNN的架构概述

在结构上,普通神经网络接收输入并通过一系列隐藏层进行转换。每一层通过神经元的帮助与另一层相连。普通神经网络的主要缺点是它们不适合扩展到完整图像。

CNN的架构中,神经元按三维结构排列,分别是宽度、高度和深度。当前层的每个神经元都连接到上一层输出的一小块。这类似于在输入图像上叠加滤波器。它使用M滤波器以确保获得所有细节。这些M滤波器是特征提取器,提取边缘、角点等特征。

用于构建卷积神经网络的层

以下层用于构建卷积神经网络 −

  • 输入层− 它直接接收原始图像数据。

  • 卷积层− 这一层是卷积神经网络的核心构建模块,负责大部分计算。这一层计算神经元与输入中各个片段之间的卷积。

  • 整流线性单位层− 它对前一层的输出应用激活函数。它为网络增加了非线性,使其能够很好地推广到任何类型的函数。

  • 池层− 池化帮助我们在网络中只保留重要部分。池层独立于输入的每个深度切片上工作,并在空间上调整其大小。它使用了MAX功能。

  • 全连通层/输出层− 该层计算最后一层的输出分数。最终输出大小为 ,其中 L 是训练数据集的数量。

安装有用的 Python 包

你可以用Keras,这是一个用Python编写的高级神经网络API,可以运行在TensorFlow、CNTK或Theno之上。它兼容 Python 2.7-3.6。你可以从 https://keras.io/ 了解更多。

使用以下命令安装keras−

pip install keras

conda环境下,你可以使用以下命令 −

conda install c conda-forge keras

利用人工神经网络构建线性回归器

在本节中,你将学习如何利用人工神经网络构建线性回归器。你可以用KerasRegressor来实现这个目标。在这个例子中,我们使用波士顿房价数据集,其中有13个数值数据,针对波士顿的房产。该 Python 代码如下所示 −

导入所有所需软件包,如图所示 −

import numpy import pandas from keras.models import Sequential from keras.layers import Dense from keras.wrappers.scikit_learn import KerasRegressor from sklearn.model_selection import cross_val_score from sklearn.model_selection import KFold

现在,加载保存在本地目录中的数据集。

dataframe = pandas.read_csv("/Usrrs/admin/data.csv", delim_whitespace = True, header = None) dataset = dataframe.values

现在,将数据分为输入和输出变量,即X和Y −

X = dataset[:,0:13] Y = dataset[:,13]

由于我们使用基线神经网络,定义模型−

def baseline_model():

现在,创建模型如下 −

model_regressor = Sequential() model_regressor.add(Dense(13, input_dim = 13, kernel_initializer = 'normal', activation = 'relu')) model_regressor.add(Dense(1, kernel_initializer = 'normal'))

接着,编译模型−

model_regressor.compile(loss='mean_squared_error', optimizer='adam') return model_regressor

现在,将随机种子固定为以下可重复性 −

model_regressor.compile(loss='mean_squared_error', optimizer='adam') return model_regressor

现在,将随机种子固定为以下可重复性 −

seed = 7 numpy.random.seed(seed)

用于scikit-learn的 Keras 包装对象称为KerasRegressor。在本节中,我们将用标准化数据集来评估该模型。

estimator = KerasRegressor(build_fn = baseline_model, nb_epoch = 100, batch_size = 5, verbose = 0) kfold = KFold(n_splits = 10, random_state = seed) baseline_result = cross_val_score(estimator, X, Y, cv = kfold) print("Baseline: %.2f (%.2f) MSE" % (Baseline_result.mean(),Baseline_result.std()))

上述代码的输出将是模型在未见数据问题上的表现估计值。它将是均方误差,包括交叉验证评估中所有10个折面的平均和标准差。

图像分类器:深度学习的应用

卷积神经网络(CNN)解决了一个图像分类问题,即输入图像属于哪个类别。你可以使用 Keras 深度学习库。请注意,我们使用的是来自以下链接 https://www.kaggle.com/c/dogs-vs-cats/data 的猫狗训练和测试图像数据集。

导入重要的 Keras 库和包,如图所示 −

以下称为sequential的包将以顺序网络初始化神经网络。

from keras.models import Sequential

以下称为Conv2D的包用于执行卷积作,即CNN的第一步。

from keras.layers import Conv2D

以下软件包称为MaxPoling2D,用于执行池化作,这是CNN的第二步。

from keras.layers import MaxPooling2D

以下软件包称为Flatten,是将所有所得二维数组转换为单一长连续线性向量的过程。

from keras.layers import Flatten

以下称为Dense的软件包用于实现神经网络的全连接,这是CNN的第四步。

from keras.layers import Dense

现在,创建一个顺序类对象。

S_classifier = Sequential()

接下来,是编写卷积部分。

S_classifier.add(Conv2D(32, (3, 3), input_shape = (64, 64, 3), activation = 'relu'))

这里relu是整流函数。

现在,CNN的下一步是在卷积部分后对所得特征映射进行池化作。

S-classifier.add(MaxPooling2D(pool_size = (2, 2)))

现在,利用 恭维化 − 将所有合并的图像转换为连续向量

S_classifier.add(Flatten())

接下来,创建一个全连通的层。

S_classifier.add(Dense(units = 128, activation = 'relu'))

这里,128 是隐藏单元的数量。通常将隐藏单元数定义为2的幂次方。

现在,初始化输出层如下 −

S_classifier.add(Dense(units = 1, activation = 'sigmoid'))

现在,编译CNN,我们已经构建了——

S_classifier.compile(optimizer = 'adam', loss = 'binary_crossentropy', metrics = ['accuracy'])

这里的优化参数是选择随机梯度下降算法,损失参数是选择损失函数,度量参数是选择性能指标。

现在,进行图像增强,然后将图像拟合到神经网络中——

train_datagen = ImageDataGenerator(rescale = 1./255,shear_range = 0.2, zoom_range = 0.2, horizontal_flip = True) test_datagen = ImageDataGenerator(rescale = 1./255) training_set = train_datagen.flow_from_directory(/Users/admin/training_set,target_size = (64, 64),batch_size = 32,class_mode = 'binary') test_set = test_datagen.flow_from_directory('test_set',target_size = (64, 64),batch_size = 32,class_mode = 'binary')

现在,将数据拟合到我们创建的模型——

classifier.fit_generator(training_set,steps_per_epoch = 8000,epochs = 25,validation_data = test_set,validation_steps = 2000)

这里steps_per_epoch训练图像的数量。

现在模型已经训练好,我们可以用它进行如下预测 −

from keras.preprocessing import image test_image = image.load_img('dataset/single_prediction/cat_or_dog_1.jpg', target_size = (64, 64)) test_image = image.img_to_array(test_image) test_image = np.expand_dims(test_image, axis = 0) result = classifier.predict(test_image) training_set.class_indices if result[0][0] == 1: prediction = 'dog' else: prediction = 'cat'
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/21 16:26:58

供应链需求预测:使用TensorFlow时间序列建模

供应链需求预测:使用TensorFlow时间序列建模 在零售、制造和电商行业,一个看似简单的问题常常带来巨大挑战:明天该备多少货? 备多了,库存积压、资金占用、甚至商品过期;备少了,客户下单却无法履…

作者头像 李华
网站建设 2026/7/31 8:34:00

【大模型部署新标杆】:Open-AutoGLM生产级部署的7个关键步骤

第一章:Open-AutoGLM生产级部署概述Open-AutoGLM 作为新一代开源自动语言模型推理框架,专为高并发、低延迟的生产环境设计。其核心优势在于动态调度机制与硬件感知优化策略,支持多模态输入处理和跨平台部署能力。在实际落地过程中&#xff0c…

作者头像 李华
网站建设 2026/7/31 8:33:59

如何监控TensorFlow训练过程?TensorBoard进阶用法

如何监控TensorFlow训练过程?TensorBoard进阶用法 在深度学习项目的实际开发中,模型跑起来只是第一步。真正棘手的是:你看着终端里不断跳动的 loss 值,却不知道它到底是收敛了、震荡了,还是干脆“躺平”了&#xff1b…

作者头像 李华
网站建设 2026/8/2 10:08:45

终极Homarr完整入门指南:打造现代化服务器仪表盘

终极Homarr完整入门指南:打造现代化服务器仪表盘 【免费下载链接】homarr Customizable browsers home page to interact with your homeservers Docker containers (e.g. Sonarr/Radarr) 项目地址: https://gitcode.com/gh_mirrors/ho/homarr Homarr是一个功…

作者头像 李华
网站建设 2026/8/9 22:49:01

3D智能地图构建新突破:SegMap完整指南

3D智能地图构建新突破:SegMap完整指南 【免费下载链接】segmap A map representation based on 3D segments 项目地址: https://gitcode.com/gh_mirrors/se/segmap SegMap是一个基于3D段的地图表示系统,专为机器人定位、环境重建和语义提取而设计…

作者头像 李华
网站建设 2026/8/9 22:12:12

Open-AutoGLM自动化测试实施难点全解(含真实项目案例)

第一章:Open-AutoGLM自动化测试实施难点全解(含真实项目案例) 在实际落地 Open-AutoGLM 框架进行自动化测试时,团队常面临模型理解偏差、测试用例生成稳定性不足及环境耦合度高等核心挑战。这些问题直接影响测试覆盖率和执行效率&…

作者头像 李华