首页 飞桨领航团 帖子详情
【AI达人养成营】Peng学习心得
收藏
快速回复
飞桨领航团 其他学习资料AI达人创造营 289 0
【AI达人养成营】Peng学习心得
收藏
快速回复
飞桨领航团 其他学习资料AI达人创造营 289 0

历时将近一个半月的百度AI达人养成营要结束了,这一个多月以来确实是一直在进步。我是从这个暑假才接触了AI,计算机视觉方向的知识,从最开始跑Github上的yolo模型,做数据集训练,到学习python语言,接触神经网络,学会如何看懂代码中的网络,可以说是很大的一个成长。在这里记录一下我的学习心得与成长历程吧,未来还有很多的路要走。具体的笔记大家也可以看我的博客——努力学习DePeng的博客_CSDN博客-笔记领域博主

一、知识总结

  • 课节1-7 Python基础

Part1 字符串操作

一些操作只是改变了显示,记得赋值操作

- str1+str2 #字符串进行拼接

- str*n #字符串重复显示n次

- len #字符串长度

- 字符串.spilt() #根据括号内间隔符对字符串切分

- 字符串1.join(字符串2) #字符串1与2的合并

- 字符串.replace('str1','str2') #把字符串中str1换为str2

- 字符串.upper() #把字符串内容改为大写

- 字符串.lower() #把字符串内容改为小写

- 字符串.strip() #删掉字符串首尾空白

- 字符串.lstrip() #删掉字符串左边空白

- 字符串.rstrip() #删掉字符串右边空白

- '{} {} {}'.format('str1','str2','str3') #将str参数传递,可在{}内标号确定传递位置,也可指定参数传递

- 字符串 = '%s %f %d' % {str,float,int} #参数传递

Part2 Python索引

python索引是从0开始的;

可通过负数进行从后往前索引(从-1开始);

也可通过[n:n+a]进行切片操作(左闭右开的区间),[n:]代表从n开始右边全取,[:n]代表从左边开始取到n,[::n]代表每隔n个字符取一次

Part3 Python List结构(列表结构)

通过[]创建list结构,里面可以放任何类型且无长度限制

len(list([])) #可以打印list长度

list可加法操作拼接,可乘法操作重复复制

list结构也可以像python索引并进行替换赋值操作

del list[n:n+a] 可以进行删除操作

list.count[‘a’] 对list中的a进行计数

list.index[‘a’] 对a在list中的位置进行索引

list.append(’’) 对list中添加东西,一次只能添加一个元素

list.insert(n,’’) 在list的n位置插入元素

list.remove(’’) 在list中删除元素

list.pop(n) 弹出n元素并进行显示和在list中删除操作

list.sort() 对list元素进行排序,list改变list1 = sorted(list) 对list进行排序,list不改变,list1为排序后输出#默认为从小到大排序,可通过**(reverse = True)**进行从大到小排序

list.reverse() 对list中元素进行颠倒顺序

list = range(start, stop, step)

参数说明:

start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0,5);

stop: 计数到 stop 结束,但不包括 stop。例如:range(0,5) 是[0,1,2,3,4]没有5

step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)

Part4 Python字典

dict = {} 定义字典 key—value,一个键对应一个值 key一般用字符串,value什么类型值都可以

dict[‘a’] = 123 在字典dict中赋值,键值a对应值123 如:dict = {‘a’:123}字典索引只能拿键值key去索引,不能用index索引

dict.get(‘a’) = dict[‘a’]

dict.pop(‘a’) 弹出当前key值’a’

del dict[‘a’] 删除key值’a’

dict1.update(dict2) 用dict2中的key值更新dict1

dict.keys() 打印所有的key值

dict.values() 打印所有的value值

dict.items() 打印所有key与其对应的value值

Part5 Python集合

list = set(list) 集合保留下列表中唯一的元素,去除重复字符

{} 写key—value对是字典,不写是集合

set1.union(set2) or set1 | set2 求集合1与集合2的并集

set1.intersection(set2) or set1 & set2 求集合1与集合2的交集

set1.difference(set2) or set1 - set2 求集合1关于集合2的差异

set2.issubset(set1) or set2 =set1 判断集合2是否是集合1的子集,输出为bool值

set.add() 在集合中添加元素

set.update() 在集合中更新元素

set.remove() 在集合中删除元素

set.pop() 在集合中弹出元素,从左边开始弹出

Part6 赋值机制

a is b :a与b的id相同 id——内存指向

a = b : a与b的值相同为了提高内存的利用效率,对于值比较小的数字采用重用方式,id相同;对于数值比较大的数字指向不同内存,id不同

..............还有判断结构,循环结构,函数,包,类,文件操作,异常处理机制等等 Python 冒泡排序,快速排序,插入排序和希尔排序算法部分大家可以查找菜鸟教程,里面有很多很基础的Python代码示例

  • 课节8-12 图像处理与神经网络模型基础

import numpy as np

import matplotlib.pyplot as plt

from PIL import Image

主要是用了这三个库,大家还可以学习一下opencv的库 import cv2,会有更方便的操作

二、炼丹心得

具体的网络模型我就在这里不介绍了,在这里给大家介绍一下炼丹的超参数吧

batchsize:批大小。在深度学习中,一般采用SGD训练,即每次训练在训练集中取batchsize个样本训练;

iteration:1个iteration等于使用batchsize个样本训练一次;

epoch:1个epoch等于使用训练集中的全部样本训练一次;

举个例子,我现在训练集有1840个样本,设置batchsize=8,iteration=4000那么:等我训练到第230个iteration时,就是一个epoch,一共有17个epoch当然也可以直接设置epoch个数而不是迭代轮数,batchsize的大小应该根据你的显卡的能力来调整,在这里很感谢百度飞桨平台给的每天8小时至尊GPUV100算力,抱拳!

还有学习率,优化器的定义等等许多

其实我们可以把神经网络的搭建与训练到测试分为以下几个步骤:

  • 制造数据集Dataset,将数据集的images和labels以一定比例(如8:2)划分为训练集:验证集,并通过DataLoader装入指定容器中(这就是框架的厉害之处之一啦);
  • 搭建网络模型,卷积层、池化层、全连接层、前反向传播、激活函数等等一些巴拉巴拉。可以是简单的ResNet18,或者别的更复杂的模型,当然大家也可以直接调用框架的API,这样更方便;
  • 将模型封装,并进行数据输入、优化器、配置模型,进行超参数设置来训练模型与评估。训练用的是训练集,评估用的是验证集哦。

在这里强烈建议大家学习网络模型,炼丹的话先去手撕一遍Resnet18,帮助很大!!!

好啦,很感谢飞桨提供的这次学习的机会,大家一起学习一起进步!

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