如何 用 pip 更新包_python如何实现人脸识别

如何 用 pip 更新包,python如何实现人脸识别?

翻出我曾经写的一篇文章来介绍这个问题。

为大家带来一篇 初步使用Keras深度学习破解验证码 的文章。 当然我们这里识别的是普通验证码,是Laravel常用的验证码库

Captcha for Laravel 5

如下图,又5个数字字母所组成的验证码。我用PHP一共生成了5万个验证码。后面也会提供给大家

导入所需的库

这里我们还是使用Keras,底层使用Tensorflow做为底层库。

本次使用的模型是简单的卷积神经网络模型,后面也会使用更加复杂的模型

卷积神经网络(Convolutional Neural Network,CNN)是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有出色表现。它包括卷积层(alternating convolutional layer)和池层(pooling layer)。

一般地,CNN的基本结构包括两层,其一为特征提取层,每个神经元的输入与前一层的局部接受域相连,并提取该局部的特征。一旦该局部特征被提取后,它与其它特征间的位置关系也随之确定下来;其二是特征映射层,网络的每个计算层由多个特征映射组成,每个特征映射是一个平面,平面上所有神经元的权值相等。特征映射结构采用影响函数核小的sigmoid函数作为卷积网络的激活函数,使得特征映射具有位移不变性。此外,由于一个映射面上的神经元共享权值,因而减少了网络自由参数的个数。卷积神经网络中的每一个卷积层都紧跟着一个用来求局部平均与二次提取的计算层,这种特有的两次特征提取结构减小了特征分辨率。

配置参数

加载数据

训练模型的时候,我们可以选择两种方式来生成我们的训练数据,一种是直接全部载入内存,然后开始训练,一种是定义一个数据生成器,然后利用 fit_generator 分批加载数据来训练。

因为样本是5万张,但是只有200多M,可以一次性载入内存。

最后会生成pickle文件。python的pickle模块实现了基本的数据序列和反序列化。通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,永久存储;通过pickle模块的反序列化操作,我们能够从文件中创建上一次程序保存的对象。

如果使用我保存好的pickle文件,可以不用执行下列步骤

加载数据,读取pickle文件

创建模型

开始训练模型

训练完成,进行验证

改进

对于这种按顺序的文字验证码,还有一种更好方法可以使用,那就是循环神经网络来识别序列。 我会在后面继续介绍如何用循环神经网络构建模型。

代码地址:https://github.com/szpnygo/keras-cnn-captcha

Pickle地址:https://pan.baidu.com/s/1i4JiZOT

怎样测算我用Python写的人工智能算法性能?

设置在深入到基准测试和性能分析之前,首先我们需要一个合适的环境。这意味着我们需要为这项任务配置我们的机器和操作系统。我的机器的规格如下:处理器:Intel(R) Xeon(R) CPU E5-2699 v3 @ 2.30GHz内存:32GB操作系统:Ubuntu 16.04 LTSKernel:4.4.0-75-generic我们的目标是得到可复现的结果,因此要确保我们的数据不会受到其它后台进程、操作系统配置或任何其它硬件性能提升技术的影响。让我们首先从配置用于性能分析的机器开始。

硬件功能首先,禁用所有硬件性能功能,也就是说要禁用 Intel Turbo Boost 和 Hyper Threading from BIOS/UEFI。正如其官方网页上说的那样,Turbo Boost 是“一种在处理器内核运行,并可以在低于功耗、电流和温度规格限制的情况下允许它们以高于额定频率的速度运行的技术。”此外,Hyper Threading 是“一种可以更高效地利用处理器资源的技术,能使每个内核都能多线程运行。”这都是值得我们花钱购买的好东西。那为什么要在性能分析/基准测试中禁用它们呢?因为使用这些技术会让我们无法得到可靠的和可复现的结果。这会让运行过程发生变化。让我们看个小例子 primes.py,代码故意写得很糟糕。

这段代码可在 GitHub 上查看:https://github.com/apatrascu/hunting-python-performance/blob/master/01.primes.py。你需要运行以下命令安装一个依赖包:

pip install statistics

让我们在一个启用了 Turbo Boost 和 Hyper Threading 的系统中运行它:

现在禁用该系统的睿频加速(Turbo Boost) 和超线程(Hyper Threading),然后再次运行这段代码:

看看第一个案例的标准差为15%。这是一个很大的值!假设我们的优化只能带来 6% 的加速,那我们怎么能将运行过程中的变化(run to run variation)和你的实现的差异区分开?相对而言,在第二个例子中,标准差减少到了大约 0.6%,我们的新优化方案效果清晰可见。

CPU 节能

禁用所有的 CPU 节能设置,并使用固定的 CPU 频率。这可以通过在 Linux 功率调节器(power governor)中将 intel_pstate 改成 acpi_cpufreq 而实现。intel_pstate 驱动使用英特尔内核(Sandy Bridge 或更新)处理器的内部调节器实现了一个缩放驱动。 acpi_cpufreq 使用了 ACPI Processor Performance States。下面让我们先来检查一下:

可以看到这里所使用的调节器被设置成了节能模式,而 CPU 的频率范围在 1.20 GHz 到 3.60 GHz 之间。这个设置对日常应用来说是很不错的,但却会影响到基准测试的结果。那么应该给调节器设置什么值呢?如果我们浏览一下文档,我们可以看到我们可以使用以下设置:高性能(performance):以最大频率运行 CPU节能(powersave):以最小频率运行 CPU自定义(userspace ):按用户指定的频率运行 CPU按需(ondemand ):根据当前负载动态调节频率。可能跳至最高频率,空闲时又会降低保守(conservative):根据当前负载动态调节频率。相比于按需模式,其频率调节更加渐进我们要使用性能调节器(performance governor),并将频率设置成 CPU 支持的最大频率。如下所示:

现在你已经使用性能调节器将频率设置成了固定的 2.3 GHz。这是最大的可设置的值,没有睿频加速(Turbo Boost),它可以被用在 Xeon E5-2699 v3 上。要完成设置,请使用管理员权限运行以下命令:

如果你没有 cpupower,可使用以下命令安装:

sudo apt-get install linux-tools-common linux-header-`uname -r` -y

功率调节器对 CPU 的工作方式有很大的影响。该调节器的默认设置是自动调节频率以减少功耗。我们不想要这样的设置,所以从 GRUB 中禁用它。只需要编辑 /boot/grub/grub.cfg(但是如果你在 kernel 升级上很小心,那么这将会消失)或在 /etc/grub.d/40_custom 中创建一个新的 kernel 入口。我们的 boot 行中必须包含这个 flag: intel_pstate=disable,如下所示:

linux /boot/vmlinuz-4.4.0-78-generic.efi.signed root=UUID=86097ec1-3fa4-4d00-97c7-3bf91787be83 ro intel_pstate=disable quiet splash $vt_handoffASLR(地址空间配置随机发生器)

这个设置是有争议的,参见 Victor Stinner 的博客:https://haypo.github.io/journey-to-stable-benchmark-average.html。当我首次建议在基准测试时禁用 ASLR 时,那是为了进一步提升对那时在 CPython 中存在的 Profile Guided Optimizations 的支持。我为什么要说这个呢?因为在上面给出的特定硬件上,禁用 ASLR 可以将运行之间的标准差降低至 0.4%。另一方面,根据在我的个人计算机(Intel Core i7 4710MQ )上的测试,禁用 ASLR 会导致 Victor 所提到的同样的问题。在更小的 CPU(比如 Intel Atom)上的测试会带来甚至更大的运行间标准差。因为这似乎并不是普遍适用的真理,而且很大程度上依赖于硬件/软件配置,所以对于这个设置,我在启用后测量一次,再禁用后测量一次,之后再进行比较。在我的机器上,我通过在 /etc/sysctl.conf. 中加入以下命令禁用了 ASLR。使用 sudo sysctl -p 进行应用。

kernel.randomize_va_space = 0

如果你想在运行时禁用它:

sudo bash -c 'echo 0 >| /proc/sys/kernel/randomize_va_space'

如果你想重新启用:

sudo bash -c 'echo 2 >| /proc/sys/kernel/randomize_va_space' 二、内存分析

我们为什么要关心这个问题?为什么我们不仅仅就关心性能?这些问题的答案相当复杂,但我会总结出来。PyPy 是一个可选的 Python 解释器,其相对于 CPython 有一些巨大的优势:速度(通过其 Just in Time 编译器)、兼容性(几乎可以替代 CPython)和并发性(使用 stackless 和 greenlets)。PyPy 的一个缺点是因为其 JIT 和垃圾一样的回收站实现,它通常会使用比 CPython 更多的内存。但是在某些案例中,其的内存消耗会比 CPython 少。下面我们来看看你可以如何测量你的应用使用了多少内存。

诊断内存使用

memory_profiler 是一个可用来测量解释器运行一个负载时的内存用量的库。你可以通过 pip 安装它:

pip install memory_profiler

这个工具的优点是它会在一个 Python 脚本中一行行地显示内存消耗。这可以让我们找到脚本中可以被我们重写的位置。但这种分析有一个缺点。你的代码的运行速度比一般脚本慢 10 到 20 倍。怎么使用它?你只需要在你需要测量的函数上直接加上 @profile() 即可。让我们看看实际怎么操作!我们将使用之前用过的素材脚本作为模型,但做了一点修改,移除了统计部分。代码也可在 GitHub 查看:https://github.com/apatrascu/hunting-python-performance/blob/master/02.primes-v1.py

开始测量时,使用以下 PyPy 命令:

pypy -m memory_profiler 02.primes-v3.py

或者直接在脚本中导入 memory_profiler:

pypy -m memory_profiler 02.primes-v3.py

在执行完这行代码之后,我们可以看到 PyPy 得到这样的结果:

我们可以看到这个脚本使用了 24.371094 MiB 的 RAM。让我们简单分析一下。我们看到其中大多数都用在了数值数组的构建中。它排除了偶数数值,保留了所有其它数值。我们可以通过调用 range 函数而对其进行一点改进,其使用一个增量参数。在这个案例中,该脚本看起来像是这样:

如果我们再次测量,我们可以得到以下结果:

很好,现在我们的内存消耗下降到了 22.75 MiB。使用列表解析(list comprehension),我们还可以将消耗再降低一点。

再次测量:

我们最后的脚本仅消耗 22.421875 MiB。相比于第一个版本,差不多下降了 10%。

importyeti的使用方法?

importyeti是一个用于Python的包管理器,可以用于安装、升级和管理Python包。以下是其使用方法:

1. 安装importyeti

在终端输入以下命令进行安装:

```

pip install importyeti

```

2. 搜索包

在终端输入以下命令进行包搜索:

```

importyeti search package

```

其中,package是您想要搜索的包名。例如,如果您想搜索numpy,可以输入以下命令:

```

importyeti search numpy

```

3. 安装包

在终端输入以下命令进行包安装:

```

importyeti install package

```

其中,package是您想要安装的包名。例如,如果您想安装numpy,可以输入以下命令:

```

importyeti install numpy

```

4. 升级包

在终端输入以下命令进行包升级:

```

importyeti upgrade package

```

其中,package是您想要升级的包名。例如,如果您想升级numpy,可以输入以下命令:

```

importyeti upgrade numpy

```

5. 查看已安装的包

在终端输入以下命令查看已安装的包:

```

importyeti list

```

6. 卸载包

在终端输入以下命令进行包卸载:

```

importyeti uninstall package

```

其中,package是您想要卸载的包名。例如,如果您想卸载numpy,可以输入以下命令:

```

importyeti uninstall numpy

```

以上就是importyeti的基本使用方法。

pythonpip指令是错误怎么办?

如果在使用pythonpip指令时遇到错误,可以尝试以下几个步骤:

1. 确认您的Python环境是否正确安装,并且已经添加到系统环境变量中。

2. 检查pip指令是否正确拼写,特别是大小写是否正确。

3. 尝试使用命令`python -m pip`代替直接使用`pip`指令。

4. 确认您的网络连接是否正常,有时候网络连接不稳定会导致pip下载失败。

5. 如果以上步骤都无法解决问题,可以尝试重新安装Python或者更新pip版本。

pythonrequests怎么安装?

你可以通过以下步骤来安装 Python requests 库:

1.打开命令提示符或终端窗口,进入到 Python 的安装路径下的 Scripts 目录,如:C:\Python37\Scripts(如果你使用的是 Python 3.7 版本)。

2.在命令提示符或终端窗口中,输入以下命令,安装 requests 库:

```

pip install requests

```

如果你的电脑已经安装了较旧版本的 requests 库,可以使用以下命令来更新:

```

pip install --upgrade requests

```

3.等待安装完成,通常只需几秒钟即可完成。

4.安装完成后,在 Python 代码中导入 requests 库,就可以使用它提供的各种方法来发送 HTTP 请求和处理响应。

总之,使用 pip 命令来安装 requests 库是最常见的方式,也是最简单的方式。如果你遇到了安装问题,可以参考官方文档或者搜索相关问题的解决方法。

给TA打赏
共{{data.count}}人
人已打赏
0 条回复 A文章作者M管理员
    暂无讨论,说说你的看法吧