news 2026/3/12 16:10:03

带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/3/9 23:06:16

广告投放优化:基于TensorFlow的预算分配算法

广告投放优化:基于TensorFlow的预算分配算法 在数字营销的世界里,每一分钱的广告预算都承载着增长的期望。然而现实往往并不理想——大量预算被投入到转化效率低下的渠道中,而真正高潜力的流量入口却因缺乏曝光被持续低估。这种资源错配的背后…

作者头像 李华
网站建设 2026/3/11 17:36:12

Scratch编程教学终极指南:62个完整教案助你快速上手

Scratch编程教学终极指南:62个完整教案助你快速上手 【免费下载链接】Scratch教案资源库 Scratch教案资源库欢迎来到Scratch教案资源库!本仓库提供了一系列精心编制的Scratch教案,旨在帮助教师和教育工作者更好地教授Scratch编程 项目地址:…

作者头像 李华
网站建设 2026/3/11 16:59:22

【稀缺资源】Open-AutoGLM内部实践手册流出:仅限前1000人下载

第一章:Open-AutoGLM 自动化测试概述Open-AutoGLM 是一个面向大语言模型(LLM)驱动应用的开源自动化测试框架,专注于验证基于自然语言推理与生成能力的功能正确性。该框架结合了传统软件测试的断言机制与语义相似度评估技术&#x…

作者头像 李华
网站建设 2026/3/11 11:27:18

Windows API钩子技术实战指南:MinHook深度解析

Windows API钩子技术实战指南:MinHook深度解析 【免费下载链接】minhook The Minimalistic x86/x64 API Hooking Library for Windows 项目地址: https://gitcode.com/gh_mirrors/mi/minhook 你是否曾经遇到过需要监控系统API调用、调试复杂程序或为现有软件…

作者头像 李华
网站建设 2026/3/11 11:20:00

终极推送测试工具:跨平台通知调试完全指南

终极推送测试工具:跨平台通知调试完全指南 【免费下载链接】PushNotifications 🐉 A macOS, Linux, Windows app to test push notifications on iOS and Android 项目地址: https://gitcode.com/gh_mirrors/pu/PushNotifications 在移动应用开发…

作者头像 李华
网站建设 2026/3/12 9:41:05

【Open-AutoGLM实战指南】:3步集成AI自动补全,提升编码效率200%

第一章:Open-AutoGLM 核心特性与生态定位Open-AutoGLM 是一个面向通用语言模型自动化推理与生成优化的开源框架,致力于在多样化应用场景中提升大模型的执行效率与任务适配能力。其设计融合了动态图优化、上下文感知调度与模块化插件架构,支持…

作者头像 李华