首页 飞桨领航团 帖子详情
【AI达人养成营】飞浆课程的一些总结(个人认为比较难的一些点)
收藏
快速回复
飞桨领航团 文章学习资料AI达人创造营 294 0
【AI达人养成营】飞浆课程的一些总结(个人认为比较难的一些点)
收藏
快速回复
飞桨领航团 文章学习资料AI达人创造营 294 0

round(number,digits)
返回一个数值,该数值是按照指定的小数位数进行四舍五入运算的结果

例如:round(0.456,2)=0.46

math.floor(number)
返回Number的整数部分

查找功能:string.find() 与 string.index()
列表没有find()功能,只有index()功能

find()找不到返回-1,index()找不到会报错

字符串函数
string.startwith(str) 以str开始

string.endwith(str) 以str结尾

字符串标准化str.strip()
默认去除两边的空格、换行符之类的,去除内容可以指定

字母大小写
str.upper():全部大写

str.lower():全部小写

str.capitalize():字符串的首字母大写

列表添加元素
1、append()
在末尾添加元素

2、insert()
list.insert(index, value)在指定索引位置插入值value,若索引不存在,则在末尾插入

3、extend()
合并两个列表extend(list1, list2)

集合添加、删除元素
set.add(value)
set.remove(value)
字符串的格式化输出
%

string.format()

f.string

生成器
1、列表生成式

a = (x for x in range(10))

# 访问元素
next(a)


#访问元素
for x in a:
    print(x)


2、构造函数

yield 关键字


函数

# 五种参数
# 顺序必须是  必选参数---> 默认参数---> 可变参数---> 命名关键字参数--->关键字参数
必选参数、默认参数、可变参数、关键字参数和命名关键字参数

# 关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。
# 如果要限制关键字参数的名字,就可以用命名关键字参数


map 与 reduce

map()
函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回.
返回的是map对象,结果要强制类型转换list(map())

reduce()
from functools import reduce
用传给 reduce 中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,依此类推,最后得到一个结果。


 

sorted()排序函数
除关键参数外,还有两个常用参数:reverse=True、key=len/abs/.......


装饰器
装饰器就是定义的一个函数,返回的还是函数,加以修饰

 

装饰器最大的优势就是用于解决重复性的操作,其主要使用的场景有如下几个:

计算函数运行时间
给函数打日志
类型检查

当然,如果遇到其他重复操作的场景也可以类比使用装饰器


偏函数
 from functools import partial
 

目录访问 import os

# 返回当前工作目录
os.getcwd()
os.path.abspath('')


# 改变当前工作目录 
os.chdir('/home/aistudio/work')

# 是否为文件夹
os.path.isdir('/home/aistudio/work/today')


压缩文件

print('压缩作业开始了,请您耐心等待...')

infile = 'work/loren.txt'
outfile = 'work/myarchive.zip'
f = zipfile.ZipFile(outfile, 'w', zipfile.ZIP_DEFLATED)
f.write(infile)
f.close()


print('压缩作业结束了,请问还需要帮您做什么呢?')

 

面向对象编程----类和实例
访问受限

# 定义私有属性,两个下划线
# 类中访问私有属性必须通过类方法访问
#私有属性、私有方法不能直接访问
self.__health = health


python的内置方法

__dict__ : 类的属性(包含一个字典,由类的数据属性组成)
__doc__ :类的文档字符串
__name__: 类名
__module__: 类定义所在的模块(类的全名是'__main__.className',如果类位于一个导入模块mymod中,那么className.__module__ 等于 mymod)
__bases__ : 类的所有父类构成元素(包含了一个由所有父类组成的元组)


类属性和类方法

类中的属性分为:
实例属性:对象所有,互不干扰
类属性:类所有,所有对象共享

类中的方法分为:
实例方法:定义中有self 参数
类方法:定义中有cls 参数,使用@classmethod 装饰器
静态方法:定义中即没有self 参数,也没有cls 参数,使用@staticmethod 装饰器


 

访问类属性也必须用类方法

使用类的好处
降低复杂性-》更少的bug-》提高可维护行
类可以将数据与函数绑定在一起,使代码模块化
调用数据和函数,使用对象名.的方式,使代码更加优雅
代码通常称为类的方法,数据通常称为类的属性,实例化的对象称为实例

文件读取

with open(file_path, 'r') as f:
	f.seek(0)   # 手动定位,表示从第0个字符开始读取数据
	f.read(10)	# 从定位开始,读取10个字符
	f.tell()	# 返回当前定位


神经网络
高级API训练网络
一是定义输入数据形状大小和数据类型。

input_define = paddle.static.InputSpec(shape=[-1,3,224,224], dtype="float32", name="img")
label_define = paddle.static.InputSpec(shape=[-1,1], dtype="int64", name="label")


二是实例化模型。如果要用高阶API,需要用Paddle.Model()对模型进行封装

model = MyCNN()
model = paddle.Model(model,inputs=input_define,labels=label_define) #用Paddle.Model()对模型进行封装

三是定义优化器。优化器中的学习率(learning_rate)参数很重要。要是训练过程中得到的准确率呈震荡状态,忽大忽小,可以试试进一步把学习率调低。

optimizer = paddle.optimizer.Adam(learning_rate=0.0001, parameters=model.parameters())


四是准备模型。model.prepare()。

# 配置优化器、损失函数、评估指标
model.prepare(paddle.optimizer.Adam(learning_rate=0.008, parameters=model.parameters()), 
              paddle.nn.CrossEntropyLoss(), 
              paddle.metric.Accuracy())
              
              
model.prepare(optimizer=optimizer, #指定优化器
              loss=paddle.nn.CrossEntropyLoss(), #指定损失函数
              metrics=paddle.metric.Accuracy()) #指定评估方法  


五是训练模型。model.fit()。

# 启动模型全流程训练
model.fit(train_dataset,  # 训练数据集
          eval_dataset,   # 评估数据集
          epochs=10,       # 训练的总轮次
          batch_size=64,  # 训练使用的批大小
          verbose=1,      # 日志展示形式
          callbacks=[visualdl])  # 设置可视化
          
          
model.fit(train_data=train_dataset,     #训练数据集
          eval_data=eval_dataset,         #测试数据集
          batch_size=64,                  #一个批次的样本数量
          epochs=50,                      #迭代轮次
          save_dir="/home/aistudio/lup", #把模型参数、优化器参数保存至自定义的文件夹
          save_freq=20,                    #设定每隔多少个epoch保存模型参数及优化器参数
          log_freq=100                     #打印日志的频率
) 

 

0
收藏
回复
在@后输入用户全名并按空格结束,可艾特全站任一用户