作者:给我丶鼓励


人脸关键点检测

  |   0 评论   |   0 浏览   |   给我丶鼓励

在这个任务是对坐标进行回归,使用均方误差(Mean Square error )损失函数 paddle.nn.MSELoss() 来做计算,飞桨 2.0 中,在 nn 下将损失函数封装成可调用类。这里使用 paddle.Model 相关的 API 直接进行训练,只需要定义好数据集、网络模型和损失函数即可。

使用模型代码进行 Model 实例生成,使用 prepare 接口定义优化器、损失函数和评价指标等信息,用于后续训练使用。在所有初步配置完成后,调用 fit 接口开启训练执行过程,调用 fit 时只需要将前面定义好的训练数据集、测试数据集、训练轮次(Epoch)和批次大小(batch_size)配置好即可。

使用卷积神经网络进行图像分类

  |   0 评论   |   0 浏览   |   给我丶鼓励

本案例将会使用飞桨提供的API完成数据集的下载并为后续的训练任务准备好数据迭代器。cifar10数据集由60000张大小为32 * 32的彩色图片组成,其中有50000张图片组成了训练集,另外10000张图片组成了测试集。这些图片分为10个类别,将训练一个模型能够把图片进行正确的分类。

Python的命名元组是手工定义类的一个很好的选择

  |   0 评论   |   0 浏览   |   给我丶鼓励
# 使用namedtuple比手动定义类要短得多:
>>> from collections import namedtuple
>>> Car = namedtuple('Car', 'color mileage')

# 我们新的“Car”类按预期工作:
>>> my_car = Car('red', 3812.4)
>>> my_car.color
'red'
>>> my_car.mileage
3812.4

# 我们得到一个不错的字符串repr:
>>> my_car
Car(color='red' , mileage=3812.4)

# 和元组一样,namedtuple也是不可变的:
>>> my_car.color = 'blue'
AttributeError: "can't set attribute"

您可以使用“json.dumps()”来漂亮地打印Python字典

  |   0 评论   |   0 浏览   |   给我丶鼓励
# 对于dicts的标准字符串repr很难阅读:
>>> my_mapping = {'a': 23, 'b': 42, 'c': 0xc0ffee}
>>> my_mapping
{'b': 42, 'c': 12648430. 'a': 23}  # �0�6

# “json”模块可以做得更好:
>>> import json
>>> print(json.dumps(my_mapping, indent=4, sort_keys=True))
{
    "a": 23,
    "b": 42,
    "c": 12648430
}

# 注意,这只适用于包含基本类型的字典(检查“pprint”模块):
>>> json.dumps({all: 'yup'})
TypeError: keys must be a string

使用“timeit”模块测量一小段Python代码的执行时间

  |   0 评论   |   0 浏览   |   给我丶鼓励
# “timeit”模块允许您度量一小段Python代码的执行时间

>>> import timeit
>>> timeit.timeit('"-".join(str(n) for n in range(100))',
                  number=10000)

0.3412662749997253

>>> timeit.timeit('"-".join([str(n) for n in range(100)])',
                  number=10000)

0.2996307989997149

>>> timeit.timeit('"-".join(map(str, range(100)))',
                  number=10000)

0.24581470699922647

dict可用于模拟switch/case语句

  |   0 评论   |   0 浏览   |   给我丶鼓励
# 因为Python拥有一流的函数,所以它们可以用来模拟switch/case语句

def dispatch_if(operator, x, y):
    if operator == 'add':
        return x + y
    elif operator == 'sub':
        return x - y
    elif operator == 'mul':
        return x * y
    elif operator == 'div':
        return x / y
    else:
        return None


def dispatch_dict(operator, x, y):
    return {
        'add': lambda: x + y,
        'sub': lambda: x - y,
        'mul': lambda: x * y,
        'div': lambda: x / y,
    }.get(operator, lambda: None)()


>>> dispatch_if('mul', 2, 8)
16

>>> dispatch_dict('mul', 2, 8)
16

>>> dispatch_if('unknown', 2, 8)
None

>>> dispatch_dict('unknown', 2, 8)
None

Python列表片语法有趣

  |   0 评论   |   0 浏览   |   给我丶鼓励
# Python的列表片语法可以在没有索引的情况下用于一些有趣而有用的事情

# 你可以清除列表中的所有元素:
>>> lst = [1, 2, 3, 4, 5]
>>> del lst[:]
>>> lst
[]

# 您可以替换列表的所有元素,而不需要创建一个新的列表对象:
>>> a = lst
>>> lst[:] = [7, 8, 9]
>>> lst
[7, 8, 9]
>>> a
[7, 8, 9]
>>> a is lst
True

# 您还可以创建列表的(浅)副本:
>>> b = lst[:]
>>> b
[7, 8, 9]
>>> b is lst
False