# Python的' for '和' while '循环支持' else '子句,
# 该子句仅在循环结束而没有碰到' break '语句时执行。
def contains(haystack, needle):
"""
Throw a ValueError if `needle` not
in `haystack`.
"""
for item in haystack:
if item == needle:
break
else:
# 这里的“else”是一个“completion子句”,
# 它只在循环运行到补全而没有碰到“break”语句时运行。
raise ValueError('Needle not found')
>>> contains([23, 'needle', 0xbadc0ffee], 'needle')
None
>>> contains([23, 42, 0xbadc0ffee], 'needle')
ValueError: "Needle not found"
# 就个人而言,我不喜欢循环中的“else”“completion子句”,
# 因为我觉得它很混乱。我宁愿做这样的事
def better_contains(haystack, needle):
for item in haystack:
if item == needle:
return
raise ValueError('Needle not found')
# 注意:通常您会编写类似这样的内容来进行成员资格测试,
# 这更符合python的风格
if needle not in haystack:
raise ValueError('Needle not found')
# Python的' for '和' while '循环支持' else '子句,该子句仅在循环结束而没有碰到' break '语句时执行。
def contains(haystack, needle):
"""
Throw a ValueError if `needle` not
in `haystack`.
"""
for item in haystack:
if item == needle:
break
else:
# 这里的“else”是一个“completion子句”,
# 它只在循环运行到完成时没有碰到“break”语句时运行
raise ValueError('Needle not found')
>>> contains([23, 'needle', 0xbadc0ffee], 'needle')
None
>>> contains([23, 42, 0xbadc0ffee], 'needle')
ValueError: "Needle not found"
# 就个人而言,我不喜欢循环中的“else”“completion子句”,
# 因为我觉得它很混乱。我宁愿做这样的事
def better_contains(haystack, needle):
for item in haystack:
if item == needle:
return
raise ValueError('Needle not found')
# 注意:通常您会编写类似这样的内容来进行成员资格测试,
# 这更符合python的风格
if needle not in haystack:
raise ValueError('Needle not found')
# 检查列表中所有项是否相等的python方法
>>> lst = ['a', 'a', 'a']
>>> len(set(lst)) == 1
True
>>> all(x == lst[0] for x in lst)
True
>>> lst.count(lst[0]) == len(lst)
True
# 我从“最python化”到“最python化”,从“最低效”到“最高效”。
# len(set())解决方案是惯用的,但是构造一个集合在内存和速度方面效率较低。
# 在Python 3.4+中,可以使用context .suppress()选择性地忽略特定异常
import contextlib
with contextlib.suppress(FileNotFoundError):
os.remove('somefile.tmp')
# 这相当于:
try:
os.remove('somefile.tmp')
except FileNotFoundError:
pass
# contextlib.suppress docstring:
#
# "返回一个上下文管理器,如果在with语句的主体中出现任何指定的异常,该上下文管理器
# 将抑制这些异常,然后在with语句结束后继续执行第一个语句。
# 在Python3中,你可以使用一个“*”的星号。在函数参数列表中强制执行调用者使用关键字参数的某些参数:
>>> def f(a, b, *, c='x', d='y', e='z'):
... return 'Hello'
# 为了传递c、d和e的值,您需要显式地将其作为“key=value”命名的参数传递
>>> f(1, 2, 'p', 'q', 'v')
TypeError:
"f() takes 2 positional arguments but 5 were given"
>>> f(1, 2, c='p', d='q',e='v')
'Hello'
# Python 3.5+允许传递多个集合关键字参数(“kwargs”)到一个#函数在单个调用中使用“**”语法
>>> def process_data(a, b, c, d):
>>> print(a, b, c, d)
>>> x = {'a': 1, 'b': 2}
>>> y = {'c': 3, 'd': 4}
>>> process_data(**x, **y)
1 2 3 4
>>> process_data(**x, c=23, d=42)
1 2 23 42
Object.create(Array).length === 1 //true
Object.keys(Object.create(Array)).length === 0 //true
为什么呢?
wtfjs 收集了一些反常识的 js 代码片段,但这些代码的执行流程都是有文档可参考的,本系列主要是通过解释这些代码来帮助读者复习与进一步了解 JavaScript。
!! 与 == 的转换规则一样吗?详细的转换规则是什么?
去抖和节流是什么?是怎么减少频繁操作的?如何实现这两个函数?
conda create -n 【环境名称】 --clone 【被克隆环境路径】
如下:
conda create -n Pytorch --clone ./envs/Pytorch
TNN:由腾讯优图实验室打造,移动端高性能、轻量级推理框架,同时拥有跨平台、高性能、模型压缩、代码裁剪等众多突出优势。TNN 框架在原有 Rapidnet、ncnn 框架的基础上进一步加强了移动端设备的支持以及性能优化,同时也借鉴了业界主流开源框架高性能和良好拓展性的优点。
MNN 是一个轻量级的深度神经网络推理引擎,在端侧加载深度神经网络模型进行推理预测。目前,MNN 已经在阿里巴巴的手机淘宝、手机天猫、优酷等 20 多个 App 中使用,覆盖直播、短视频、搜索推荐、商品图像搜索、互动营销、权益发放、安全风控等场景。此外,IoT 等场景下也有若干应用。
下面就介绍如何使用 MNN 在 Android 设备上实现图像分类。
一行代码实现人脸检测,人脸关键点检测和戴口罩检测。
本项目是使用 Paddle Lite 的 C++ 实现的人脸检测,人脸关键点检测和戴口罩检测,并将编译好的动态库和静态库部署在 Android 应用上,在 Android 设备上实现人脸检测,人脸关键点检测和戴口罩检测,所以本应不会使用到 C++ 开发,可以只使用笔者提供的 JNI 接口实现这些功能。在 ai
这个 module 是笔者在开发时使用到的,读者在使用这个项目时,完全可以删除掉,如果是看 C++ 实现,也可以看这个 module 的源码。
然后开始编写人脸识别和人脸注册工具类,使用 insightface.app.FaceAnalysis()
可以获取模型对象,这里包含了三个模型,首先是人脸检测模型,然后是人脸特征提取模型,和最后的性别年龄识别模型。使用 model.prepare()
可以配置 ctx_id
指定使用哪一块 GPU,如果是负数则是使用 CPU 执行预测,nms
配置的是人脸检测的阈值。load_faces()
函数是加载人脸库中的人脸,用于之后的人脸识别对比。
说实话,这个修饰符我用得很少,不是因为他没有用,实际上他和 v-model
的功能基本上(为什么是基本,下文有解释)是一样的,但是 v-model
在一个组件上只能出现一次,试想一下,如果你需要双向绑定多个变量怎么办?最基础的写法如下:
这篇文章的主角是 JS 正则表达式中的 test
方法,这个方法是用来检查正则表达式是否能匹配上给定字符串的,在我发现这个问题之前,我的使用方式是:
毛玻璃这种模糊效果在各种应用程序中见得不少,实际上这种显示效果在 CSS 中也能做到,而且可以分成两种类型,分别是元素本身模糊与元素背景模糊(指的是被元素覆盖的区域),光是用文字描述可能不太清晰,以下是对比图:
PP-YOLO 是 PaddleDetection 优化和改进的 YOLOv3 的模型,其精度(COCO 数据集 mAP)和推理速度均优于 YOLOv4 模型,PP-YOLO 在 COCO test-dev2017 数据集上精度达到 45.9%,在单卡 V100 上 FP32 推理速度为 72.9 FPS, V100 上开启 TensorRT 下 FP16 推理速度为 155.6 FPS。
本教程源码地址:https://github.com/yeyupiaoling/PP-YOLO