Python-OpenCV深度学习入门示例详解

目录
  • 0. 前言
  • 1. 计算机视觉中的深度学习简介
    • 1.1 深度学习的特点
    • 1.2 深度学习大爆发
  • 2. 用于图像分类的深度学习简介
  • 3. 用于目标检测的深度学习简介
  • 4. 深度学习框架 keras 介绍与使用
    • 4.1 keras 库简介与安装
    • 4.2 使用 keras 实现线性回归模型
    • 4.3 使用 keras 进行手写数字识别
  • 小结

0. 前言

深度学习已经成为机器学习中最受欢迎和发展最快的领域。自 2012 年深度学习性能超越机器学习等传统方法以来,深度学习架构开始快速应用于包括计算机视觉在内的众多领域。深度学习的常见应用包括语音识别、图像识别、自然语言处理、推荐系统等等。大多数现代深度学习架构都基于人工神经网络,深度学习中的“深”是指架构的层数。在本文中,首先介绍传统机器学习方法与深度学习间的差异,然后将介绍图像分类和对象检测中常见的深度学习架构,最后,将介绍深度学习 Python 库 Keras,并通过实战来推开深度学习的大门。

1. 计算机视觉中的深度学习简介

深度学习推动了计算机视觉领域的深刻变革,我们首先解释深度学习中的关键概念,以便更好的了解深度学习的广袤世界。

1.1 深度学习的特点

深度学习在许多计算机视觉任务中的性能超越了传统的机器学习方法,但在选择何种方法完成特定的计算任务时,应该明确深度学习与传统的机器学习方法之间的区别,以选择合适的方法:

  • 传统的机器学习算法大多可以在低端机器上运行,而深度学习算法需要较高的算力才能正确训练,通常这些计算可以使用 GPU 进行优化并行计算
  • 当对特征工程缺乏领域理解时,深度学习技术将是首选方法,这是由于在深度学习中,寻找相关特征的任务是算法的一部分,它通过减少问题的特征工程来实现自动化。特征工程是将领域知识应用于创建特征检测器和提取器的过程,目的是降低数据的复杂性,使传统的机器学习方法能够正确学习。因此,传统机器学习算法的性能取决于识别和提取特征的准确程度,而深度学习技术试图从数据中自动提取高级特征。
  • 传统机器学习和深度学习都能够处理海量数据集。但两种方法之间的主要区别在于随着数据规模的增加其性能的变化程度。例如,在处理小数据集时,深度学习算法难以在数据中找到映射关系,因此可能表现不佳,因为深度学习通常需要大量数据来调整其内部参数。根据经验法,如果数据集很大,深度学习会优于其他技术,而当数据集很小时,传统的机器学习算法更可取。

可以使用下图来总结机器学习与深度学习的主要区别:

由上图可知,机器学习与深度学习的关键选择要点如下:

  • 计算资源(深度学习<——高算力计算机;机器学习<——低算力计算机)
  • 特征工程(深度学习<——特征提取和目标任务在同一步骤中;机器学习<——特征提取和目标任务在不同步骤中)
  • 数据集大小(深度学习<——大型或超大型数据集;机器学习<——小型或中型数据集)

1.2 深度学习大爆发

深度学习的概念可以追溯至 1986 年,但直到 2012 年深度学习性能超越传统机器学习时,才出现了深度学习的大爆发。 ImageNet 是一个大型视觉数据库,包含超过 1400 万张带有标签的高分辨率图像,包含 20,000 多个类别。因此,2012 年 AlexNet 架构在解决 ImageNet 大规模视觉识别挑战赛 (ILSVRC) 上的突破性进展通常被认为是深度学习大爆发的开始。

2. 用于图像分类的深度学习简介

继 AlexNet 在 ILSVRC 比赛中取得成功之后,更多深度学习架构开始被应用于 ImageNet 挑战赛中,下图显示了在 ImageNet 挑战赛中的最相关深度学习模型的准确率和模型的参数量:

接下来,对深度学习模型架构进行介绍,以了解它们的发展脉络及其关键点:

AlexNet:AlexNet 是 LSVRC-2012 的获胜者,是一种简单但功能强大的网络架构,其通过堆叠卷积层和池化层,最后顶部使用全连接层。

VGG:VGGNet 由 Visual Geometry Group (VGG) 提出,在 LSVRC-2014 中排名第二,与 AlexNet 相比其在整个网络中仅使用 3 x 3 卷积核,而不是使用大尺寸卷积核(例如 7 x 7 和 11 x 11),主要贡献在于它表明网络的深度是在卷积神经网络中实现更好的识别或分类准确率的关键。它的主要缺点是训练速度非常慢,并且其网络架构权重参数量非常大(可以从上图看出)。

GoogLeNet/Inception V1:GoogLeNet (也称 Inception V1) 是 LSVRC-2014 的获胜者,其 top-5 错误率仅为 6.67%,非常接近人类水平的表现。这种架构比 VGGNet 更深,但由于其使用 9 个并行的 Inception 模块,Inception 模块基于几个非常小的卷积,极大的减少了参数数量。

ResNet:ResNets 是 LSVRC-2015 的获胜者,是迄今为止最深的网络,其包含 153 个卷积层 top-5 分类错误率仅为 4.9% (使深度学习模型准确率首次高于人类)。该架构使用跳跃连接,可实现增量学习修改。

Inception V3:Inception V2 在 Inception 模块中引入了批归一化,Inception V3 架构包含了分解思想,其目标是在不降低网络效率的情况下减少参数的数量。

Inception V4:Inception V4 具有比 Inception-V3 更统一的简化架构和更多的 Inception 模块,在 LSVRC 上达到了 80.2% 的 top-1 准确率和 95.2% 的 top-5 准确率。

3. 用于目标检测的深度学习简介

目标检测是深度学习中的一个热门话题,其用于识别和定位图像中的多个对象。目标检测算法通常使用以下三个数据集进行基准测试:1) PASCAL Visual Object (PASCAL VOC) 数据集,包含 20 个类别的 10,000 张图像,数据集中包含目标的边界框;2) ImageNet 在 2013 年发布了一个目标检测数据集,它由大约 500,000 张图像和 200 个类别组成;3) Common Objects in Context (COCO) 是一个大规模的对象检测、分割数据集,其包括 328,000 张图像以及 250 万个标记目标。为了评估目标检测算法,通常使用平均精度均值 (mean Average Precision, mAP),用于目标检测深度学习算法:

R-CNN:Region-based Convolutional Network (R-CNN) 是最早使用卷积神经网络进行目标检测的算法之一,与基于 HOG 特征的系统相比,卷积神经网络可以带来更高的对象检测性能。该算法可以分解为以下三个步骤:

  1. 创建一组候选区域
  2. 对每个候选区域通过基于 AlexNet 的模型执行前向传递以提取特征向量
  3. 潜在对象通过 SVM 分类器预测类别,利用线性回归器预测边界框的坐标

Fast R-CNN:Fast Region-based Convolutional Network (Fast R-CNN) 是对 R-CNN的改进,以有效地对目标提议进行分类。此外,Fast R-CNN 采用多项创新来提高训练和测试速度,同时提高检测精度。

Faster R-CNN:Faster R-CNN 是对 Fast R-CNN 的改进,它引入了候选区域网络 (region proposal network, RPN),与检测网络共享图像的卷积特征。

R-FCN:Region-based Fully Convolutional Network (R-FCN) 是一个只有卷积层的框架,以实现准确高效的目标检测。

YOLO: You only look once (YOLO) 可以在一个步骤中同时预测边界框和类别概率。与其他深度学习检测器相比,YOLO 产生更多的定位误差,但其产生假阳性的概率较小。

SSD:Single Shot MultiBox Detector (SSD) 同样通过单一端到端卷积神经网络架构同时预测边界框和类别概率。

YOLO V2: YOLO V2 是 YOLO 的改进版本,专注于提高准确性,同时是一个实时快速检测器。

NASNet: NASNet 的作者介绍了神经网络搜索,通过使用循环神经网络来组成神经网络架构,NASNet 学习模型模型架构的同时提高准确性。

Mask R-CNN:Mask Region-based Convolutional Network (Mask R-CNN) 是 Faster R-CNN 模型的改进,它为边界框检测添加了一个并行分支,目的是预测目标掩码。目标掩码是它在图像中按像素进行的分割,允许进行目标实例分割。

YOLO V3:YOLO V3 是以 YOLO V1 和 YOLO V2 为基础调整了网络结构;利用多尺度特征进行对象检测。

YOLO V4:YOLO-V4 算法是在原有 YOLO 目标检测架构的基础上,采用了 CNN 领域中优秀的优化策略,从数据处理、主干网络、网络训练、激活函数、损失函数等各个方面都有着不同程度的优化。

4. 深度学习框架 keras 介绍与使用

在本节中,我们将通过两个简单示例来一窥深度学习的神秘面纱。在第一个示例中,构造输入数据来解决线性回归问题;在第二个示例中,使用 MNIST 数据集对手写数字进行分类。

4.1 keras 库简介与安装

Keras是用 Python 编写的开源高级神经网络 API,它能够在 TensorFlow、或 Theano 之上运行,其最大的特点是能够实现快速实验,因此本文利用它来进行深度学习实战。

要安装 Keras,首先进行安装:

pip install keras

4.2 使用 keras 实现线性回归模型

首先创建用于训练/测试算法的数据,如下所示:

# 产生一百个随机数据点作为训练数据
Number = 100
x = np.linspace(0, Number, Number)
y = 3 * np.linspace(0, Number, Number) + np.random.uniform(-12, 12, Number)

接下来创建模型:

def create_model():
    # 创建 Sequential 模型
    model = Sequential()
    # 使用具有线性激活函数的全连接层
    model.add(Dense(input_dim=1, units=1, activation='linear', kernel_initializer='uniform'))
    # 使用均方差(mse)作为损失函数,Adam作为优化器编译模型
    model.compile(loss='mse', optimizer=Adam(lr=0.1))
    return model

使用 Keras 时,最简单的模型类型是 Sequential 模型,可以将其视为网络层的线性堆栈,对于更复杂的架构,可以使用 Keras 函数式 API,以创建任意网络架构。

作为简单示例,此处使用 Sequential 模型,然后利用 model.add() 方法堆叠层来构建模型。在此示例中,使用了具有线性激活函数的单个全连接层。定义模型之后,需要使用损失函数与优化器编译模型,示例中使用均方差 (mean squared error, MSE) 作为损失函数,使用 Adam 作为优化器并设置学习率为 0.1。

编译模型完成后,就可以使用 model.fit() 方法使用训练数据的训练模型:

linear_reg_model.fit(x, y, epochs=100, validation_split=0.2, verbose=2)

训练后,就可以获得可学习参数 w 和 b,这些值将用于接下来的:

def get_weights(model):
    w = model.get_weights()[0][0][0]
    b = model.get_weights()[1][0]
    return w, b
w_final, b_final = get_weights(linear_reg_model)

接下来,我们可以用以下方式进行预测:

predictions = w_final * x + b_final

还可以保存模型:

linear_reg_model.save_weights("my_model.h5")

最后可以将训练数据集和训练完成后线性模型进行可视化:

plt.subplot(1, 2, 1)
plt.plot(x, y, 'ro', label='Original data')
plt.xlabel('x')
plt.ylabel('y')
plt.title("Training Data")

plt.subplot(1, 2, 2)
plt.plot(x, y, 'ro', label='Original data')
plt.plot(x, predictions, label='Fitted line')
plt.xlabel('x')
plt.ylabel('y')
plt.title('Linear Regression Result', fontsize=10)
plt.legend()
plt.show()

如上图所示,可以看到左侧图像显示的是训练数据,右侧图像显示了线性回归模型对应的拟合线。

如果我们已经拥有训练完成的模型权重文件,就可以直接加载预先训练的模型来进行预测:

# 加载模型
linear_reg_model.load_weights('my_model.h5')
# 构建测试数据集
M = 3
new_x = np.linspace(Number + 1, Number + 10, M)
# 使用模型进行预测
new_predictions = linear_reg_model.predict(new_x)

程序的运行结果如下图所示:

4.3 使用 keras 进行手写数字识别

接下来,我们使用 Keras 识别手写数字,与第一个示例相同,首先需要构建模型:

def create_model():
    model = Sequential()
    model.add(Dense(units=128, activation='relu', input_shape=(784,)))
    model.add(Dense(units=128, activation='relu'))
    model.add(Dense(units=64, activation='relu'))
    model.add(Dense(units=10, activation='softmax'))
    # 使用分类交叉熵(categorical_crossentropy)作为损失函数和随机梯度下降作为优化器编译模型
    model.compile(optimizer=SGD(0.001), loss='categorical_crossentropy', metrics=['acc'])

    return model

使用 categorical_crossentropy 损失函数编译模型,该损失函数非常适合比较两个概率分布,使用随机梯度下降 (stochastic gradient descent, SGD) 作为优化器。

接下来加载 MNIST 数据集:

(train_x, train_y), (test_x, test_y) = mnist.load_data()

此外,由于我们使用的是全连接层,因此必须对加载的数据进行整形以输入网络:

train_x = train_x.reshape(60000, 784)
test_x = test_x.reshape(10000, 784)
train_y = keras.utils.to_categorical(train_y, 10)
test_y = keras.utils.to_categorical(test_y, 10)

创建模型完成后,就可以训练模型,并保存创建的模型,也可以评估模型在测试数据集上的表现:

# 模型创建
model = create_model()
# 模型训练
model.fit(train_x, train_y, batch_size=32, epochs=10, verbose=1)
# 模型保存
model.save("mnist-model.h5")
# 评估模型在测试数据集上的表现
accuracy = model.evaluate(x=test_x, y=test_y, batch_size=32)
# 打印准确率
print("Accuracy: ", accuracy[1])

接下来,可以使用训练完成的模型来预测图像中的手写数字:

def load_digit(image_name):
    gray = cv2.imread(image_name, cv2.IMREAD_GRAYSCALE)
    gray = cv2.resize(gray, (28, 28))
    gray = gray.reshape((1, 784))
    return gray
# 加载图片
test_digit_0 = load_digit("digit_0.png")
test_digit_1 = load_digit("digit_1.png")
test_digit_2 = load_digit("digit_2.png")
test_digit_3 = load_digit("digit_3.png")
imgs = np.array([test_digit_0, test_digit_1, test_digit_2, test_digit_3])
imgs = imgs.reshape(4, 784)
# 预测加载图像
prediction_class = model.predict_classes(imgs)
# 打印预测结果
print("Class: ", prediction_class)

加载的四张图像如下图所示:

使用经过训练的模型来预测这些图像,得到的输出如下:

Class: [0 1 2 3]

小结

在本节中,使用流行的库深度学习库 Keras 对深度学习进行了介绍。我们首先概述了用于图像分类和目标检测的深度学习架构。然后,我们介绍了 Keras,并通过示例训练了简单线性回归模型,介绍了如何利用 Keras 训练全连接网络识别手写数字。

到此这篇关于Python-OpenCV深度学习入门示例详解的文章就介绍到这了,更多相关Python OpenCV深度学习内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python人工智能深度学习算法优化

    目录 1.SGD 2.SGDM 3.Adam 4.Adagrad 5.RMSProp 6.NAG 1.SGD 随机梯度下降 随机梯度下降和其他的梯度下降主要区别,在于SGD每次只使用一个数据样本,去计算损失函数,求梯度,更新参数.这种方法的计算速度快,但是下降的速度慢,可能会在最低处两边震荡,停留在局部最优. 2.SGDM SGM with Momentum:动量梯度下降 动量梯度下降,在进行参数更新之前,会对之前的梯度信息,进行指数加权平均,然后使用加权平均之后的梯度,来代替原梯度,进行参数的

  • 使用Python中OpenCV和深度学习进行全面嵌套边缘检测

    这篇博客将介绍如何使用OpenCV和深度学习应用全面嵌套的边缘检测.并将对图像和视频流应用全面嵌套边缘检测,然后将结果与OpenCV的标准Canny边缘检测器进行比较. 1. 效果图 愤怒的小鸟--原始图 VS Canny边缘检测图 VS HED边缘检测图 花朵--原始图 VS Canny边缘检测图 VS HED边缘检测图 视频效果图GIF 如下 2. 全面嵌套边缘检测与Canny边缘检测 2.1 Hed与Canny边缘检测对比 Holistically-Nested Edge Detectio

  • Python Pytorch深度学习之神经网络

    目录 一.简介 二.神经网络训练过程 2.通过调用net.parameters()返回模型可训练的参数 3.迭代整个输入 4.调用反向传播 5.计算损失值 6.反向传播梯度 7.更新神经网络参数 总结 一.简介 神经网络可以通过torch.nn包构建,上一节已经对自动梯度有些了解,神经网络是基于自动梯度来定义一些模型.一个nn.Module包括层和一个方法,它会返回输出.例如:数字图片识别的网络: 上图是一个简单的前回馈神经网络,它接收输入,让输入一个接着一个通过一些层,最后给出输出. 二.神经

  • Python人工智能深度学习CNN

    目录 1.CNN概述 2.卷积层 3.池化层 4.全连层 1.CNN概述 CNN的整体思想,就是对图片进行下采样,让一个函数只学一个图的一部分,这样便得到少但是更有效的特征,最后通过全连接神经网络对结果进行输出. 整体架构如下: 输入图片 →卷积:得到特征图(激活图) →ReLU:去除负值 →池化:缩小数据量同时保留最有效特征 (以上步骤可多次进行) →输入全连接神经网络 2.卷积层 CNN-Convolution 卷积核(或者被称为kernel, filter, neuron)是要被学出来的,

  • Python Pytorch深度学习之自动微分

    目录 一.简介 二.TENSOR 三.梯度 四.Example--雅克比向量积 总结 一.简介 antograd包是Pytorch中所有神经网络的核心.autograd为Tensor上的所有操作提供自动微分,它是一个由运行定义的框架,这意味着以代码运行方式定义后向传播,并且每一次迭代都可能不同 二.TENSOR torch.Tensor是包的核心. 1.如果将属性.requires_grad设置为True,则会开始跟踪针对tensor的所有操作. 2.完成计算之后,可以调用backward()来

  • python人工智能深度学习入门逻辑回归限制

    目录 1.逻辑回归的限制 2.深度学习的引入 3.深度学习的计算方式 4.神经网络的损失函数 1.逻辑回归的限制 逻辑回归分类的时候,是把线性的函数输入进sigmoid函数进行转换,后进行分类,会在图上画出一条分类的直线,但像下图这种情况,无论怎么画,一条直线都不可能将其完全分开. 但假如我们可以对输入的特征进行一个转换,便有可能完美分类.比如: 创造一个新的特征x1:到(0,0)的距离,另一个x2:到(1,1)的距离.这样可以计算出四个点所对应的新特征,画到坐标系上如以下右图所示.这样转换之后

  • Python人工智能深度学习RNN模型结构流程

    目录 1.RNN基础模型 2.LSTM 3.流程结构 1.RNN基础模型 RNN主要特点是,在DNN隐藏层的输出内容会被存储,并且可以作为输入给到下一个神经元. 如下图所示,当"台北"这个词被输入的时候,前面的词有可能是"离开",有可能是"到达",如果把上一次输入的"离开",所得的隐藏层内容,输入给下一层,这样就有可能区分开是"离开台北",还是"到达台北". 如果隐藏层存储的内容并给下次

  • Python Pytorch深度学习之图像分类器

    目录 一.简介 二.数据集 三.训练一个图像分类器 1.导入package吧 2.归一化处理+贴标签吧 3.先来康康训练集中的照片吧 4.定义一个神经网络吧 5.定义一个损失函数和优化器吧 6.训练网络吧 7.在测试集上测试一下网络吧 8.分别查看一下训练效果吧 总结 一.简介 通常,当处理图像.文本.语音或视频数据时,可以使用标准Python将数据加载到numpy数组格式,然后将这个数组转换成torch.*Tensor 对于图像,可以用Pillow,OpenCV 对于语音,可以用scipy,l

  • Python-OpenCV深度学习入门示例详解

    目录 0. 前言 1. 计算机视觉中的深度学习简介 1.1 深度学习的特点 1.2 深度学习大爆发 2. 用于图像分类的深度学习简介 3. 用于目标检测的深度学习简介 4. 深度学习框架 keras 介绍与使用 4.1 keras 库简介与安装 4.2 使用 keras 实现线性回归模型 4.3 使用 keras 进行手写数字识别 小结 0. 前言 深度学习已经成为机器学习中最受欢迎和发展最快的领域.自 2012 年深度学习性能超越机器学习等传统方法以来,深度学习架构开始快速应用于包括计算机视觉

  • Python深度学习线性代数示例详解

    目录 标量 向量 长度.维度和形状 矩阵 张量 张量算法的基本性质 降维 点积 矩阵-矩阵乘法 范数 标量 标量由普通小写字母表示(例如,x.y和z).我们用 R \mathbb{R} R表示所有(连续)实数标量的空间. 标量由只有一个元素的张量表示.下面代码,我们实例化了两个标量,并使用它们执行一些熟悉的算数运算,即加法.乘法.除法和指数. import torch x = torch.tensor([3.0]) y = torch.tensor([2.0]) x + y, x * y, x

  • Python OpenCV实现图形检测示例详解

    目录 1. 轮廓识别与描绘 1.1 cv2.findComtours()方法 1.2 cv2.drawContours() 方法 1.3 代码示例 2. 轮廓拟合 2.1 矩形包围框拟合 - cv2.boundingRect() 2.2圆形包围框拟合 - cv2.minEnclosingCircle() 3. 凸包 绘制 4. Canny边缘检测 - cv2.Canny() 4.1 cv2.Canny() 用法简介 4.2 代码示例 5. 霍夫变换 5.1 概述 5.2 cv2.HoughLin

  • Python数学建模PuLP库线性规划入门示例详解

    目录 1.什么是线性规划 2.PuLP 库求解线性规划 -(0)导入 PuLP库函数 -(1)定义一个规划问题 -(2)定义决策变量 -(3)添加目标函数 -(4)添加约束条件 -(5)求解 3.Python程序和运行结果 1.什么是线性规划 线性规划(Linear programming),在线性等式或不等式约束条件下求解线性目标函数的极值问题,常用于解决资源分配.生产调度和混合问题.例如: max fx = 2*x1 + 3*x2 - 5*x3 s.t. x1 + 3*x2 + x3 <=

  • python计算机视觉opencv卡号识别示例详解

    目录 一.模板预处理 1.将模板设置为二值图 2.检测模板的轮廓 3.对模板轮廓排序,并将数字和轮廓一一对应,以字典存储 4.备注 二.图片预处理 1.初始化卷积核 2.图片预处理第一部分 3.图像预处理第二部分 三.轮廓处理 1.大轮廓过滤 2.小轮廓分割 模板图片如下: 需识别的图片如下: 一.模板预处理 1.将模板设置为二值图 2.检测模板的轮廓 3.对模板轮廓排序,并将数字和轮廓一一对应,以字典存储 排序的函数如下: 排序并存储: 4.备注 ①每一个数字对应的是二值图截出来的那个数字图的

  • Python中图像算术运算的示例详解

    目录 介绍 算术运算:图像相加 算术运算:图像减法 位运算 介绍 还记得你在小学时学习如何加减数字吗?现在,你也可以对图像做同样的事情! 输入图像可以进行算术运算,例如加法.减法和按位运算(AND.OR.NOT.XOR).这些操作可以帮助提高输入照片的质量. 在本文中,你将了解使用 OpenCV Python 包对图像执行算术和按位运算的步骤.让我们开始吧! 对图像进行算术运算是什么意思? 因此,假设我们希望合并两张单独的照片中的两个像素.我们怎样才能将它们合并? 让我们想象以下场景.第一个像素

  • Python OpenCV使用dlib进行多目标跟踪详解

    目录 1.使用dlib进行多目标跟踪 2.项目结构 3.dlib多对象跟踪的简单“朴素”方法 4.快速.高效的dlib多对象跟踪实现 5.完整代码 6.改进和建议 在本教程中,您将学习如何使用 dlib 库在实时视频中有效地跟踪多个对象. 我们当然可以使用 dlib 跟踪多个对象:但是,为了获得可能的最佳性能,我们需要利用多处理并将对象跟踪器分布在处理器的多个内核上. 正确利用多处理使我们能够将 dlib 多对象跟踪每秒帧数 (FPS) 提高 45% 以上! 1.使用 dlib 进行多目标跟踪

  • 利用Python创建位置生成器的示例详解

    目录 介绍 开始 步骤 创建训练数据集 创建测试数据集 将合成图像转换回坐标 放在一起 结论 介绍 在这篇文章中,我们将探索如何在美国各地城市的地图数据和公共电动自行车订阅源上训练一个快速生成的对抗网络(GAN)模型. 然后,我们可以通过为包括东京在内的世界各地城市创建合成数据集来测试该模型的学习和概括能力. git clone https://github.com/gretelai/GAN-location-generator.git 在之前的一篇博客中,我们根据电子自行车订阅源中的精确位置数

  • python实现PCA降维的示例详解

    概述 本文主要介绍一种降维方法,PCA(Principal Component Analysis,主成分分析).降维致力于解决三类问题. 1. 降维可以缓解维度灾难问题: 2. 降维可以在压缩数据的同时让信息损失最小化: 3. 理解几百个维度的数据结构很困难,两三个维度的数据通过可视化更容易理解. PCA简介 在理解特征提取与处理时,涉及高维特征向量的问题往往容易陷入维度灾难.随着数据集维度的增加,算法学习需要的样本数量呈指数级增加.有些应用中,遇到这样的大数据是非常不利的,而且从大数据集中学习

  • python模块shutil函数应用示例详解教程

    目录 本文大纲 知识串讲 1)模块导入 2)复制文件 3)复制文件夹 4)移动文件或文件夹 5)删除文件夹(慎用) 6)创建和解压压缩包 本文大纲 os模块是Python标准库中一个重要的模块,里面提供了对目录和文件的一般常用操作.而Python另外一个标准库--shutil库,它作为os模块的补充,提供了复制.移动.删除.压缩.解压等操作,这些 os 模块中一般是没有提供的.但是需要注意的是:shutil 模块对压缩包的处理是调用 ZipFile 和 TarFile这两个模块来进行的. 知识串

随机推荐