一、开题报告总结
上周的大部分时间都是在开题报告的制作与实现中度过的,经过答辩后,现对所学知识以及个人得失做以下总结:
VGG16模型由于它的抽象程度,很难直接将其带入实际进行应用,当然对于该网络的结构我做了一个简单的理解。
1.卷积过程
最初的我对于卷积的认识不过是一个简单的公式,完全不懂经常说的卷积神经网络到底什么才是卷积?网络层卷积过程到底怎么实现?
可以看到,卷积过程其实固定的矩阵(橙色),在另外一个矩阵(绿色)不断一格一格扫过去的到的数值的和,产生的一个新的矩阵,可以看出来一个5*5的矩阵经过3*3的卷积核卷积后得到的是3*3,前提橙色矩阵移动步长要为1。
2.池化过程
池化过程其实跟之前没什么不一样,只不过他不是一行一行的去扫,而是以该矩阵的倍数去扫,最后可以发现,池化后其实就是把原来的矩阵的维度减少到1/n。
(可以看到对这个大矩阵做了1/4池化)
3.VGG16结构
VGG中根据卷积核大小和卷积层数目的不同,可分为A,A-LRN,B,C,D,E共6个配置,其中以D,E两种配置较为常用,分别称为VGG16和VGG19。VGG16模型在ImageNet中实现了92.7%的前5个测试精度,这是属于1000个类的超过1400万张图像的数据集。
VGG16中以13个卷积层、3个全连接层,以及5个池化层所构成,并将其分为5大块分别以卷积层和池化层构成。
图中两个黄色的是卷积层,将300*300*3的图像输入后,因为卷积核实三维的所以卷积后是一维的,64个卷积核过后得到300*300*64的图像进入池化层,由于池化层都是2*2的并且步长为2,所以滑动本身没有重叠,长宽减半,维度64不变。
通过上面概念以此类推,输入图像是224*224*3的大小,经过通道翻倍由64一直增大为512,图像的高和宽也从224减为7。
卷积层、池化层和等操作是将原始数据映射到隐层特征空间的话,全连接层则起到将学到的“分布式特征表示"也就是起到分类器的作用。
二、Python环境搭建
1.Python环境安装
网页搜索Python官网找到需要的python版本,注意安装版本是否正确(操作系统、64位)下载后,根据提示进行安装。
安装好之后设置环境变量,右键点击"计算机",然后点击"属性",然后点击"高级系统设置",选择"系统变量"窗口下面的"Path",双击即可,然后在"Path"行,添加python安装路径即可,最后设置成功以后,在cmd命令行,输入命令"python",就可以有相关显示。
2.Anaconda配置环境
Anaconda里面集成了很多和数据科学、机器学习相关的Python第三方开源库,由于Anaconda是集成环境,所以无法满足期望轻量安装的用户,Anaconda可能会有“为了一个轮子造一辆车”的困扰,对于新手来说,集成环境也会安装一些用户未必用得到的开源库。
这里列出了5个镜像站:
- 清华大学开源软件镜像站
https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/
- 腾讯云镜像站
https://mirrors.cloud.tencent.com/anaconda/
- 南京大学镜像站
http://mirrors.nju.edu.cn/anaconda/
- 上海交大镜像站
https://mirrors.sjtug.sjtu.edu.cn/anaconda/
- 上海科技大学镜像站
https://mirrors.geekpie.club/anaconda/
通过官网进行安装
3.配置虚拟环境
进入命令行
安装
virtualenvpip install virtualenv
创建虚拟环境
virtualenv 虚拟环境名称
进入虚拟环境
cd 虚拟环境名称
.\Scripts\activate.bat
三、Python课堂学习总结
通过上面思维导图可以清洗明了的看到,包括的基础数据类型以整数,浮点数,字符串为主。以及掌握了各种运算符(算术、赋值、逻辑)以及运算符法的优先量。
1.选择语句
if...else语句
用于为程序做判断的二分支语句
if...elif...else语句
当判断条件较多,二分支结构无法满足时,采用 if...elif...else语句可以实现多条件判断。elif即else if,意为"此外如果",用于引出下一个判断条件。
选择语句嵌套
嵌套,即在一个if...else语句里面继续使用if...else语句
if 判断条件_1:
if 判断条件_2:
代码块_1
else:
代码块_2
else:
2.循环语句
while循环
主要用于不确定循环的次数时,根据条件进行判断,条件成立,就去执行条件后的代码块,条件不成立,直接跳过。
while 判断条件:
执行语句
for…in…循环
主要应用于知道循环的次数,直到遍历完整个序列的元素时,结束循环。
for 变量 in 序列:
执行语句
3.相关语句
range() 函数
用来生成自然数的序列,用list()显示具体内容 。
range(start, stop, step)
start:开始,默认是从 0 开始,可省略;stop:结束,但不包括 stop;step:步长,默认为1,可省略。
break 语句
break语句用在while和for循环中,只要在循环里遇到break,则立即结束循环。
pass语句
pass是空语句,不做任何事情,一般用做占位语句。例如我们再搭建程序成体框架时,某些具体细节语句暂时不需要完善, 此时就可以通过 pass 语句来占位,留出语句位置或补齐所需要的语法格式。
continue 语句
continue语句用在while和for循环中,只要在循环里遇到continue, continue语句后的命令不在继续执行,中断本次循环,继续下一次循环。
四、案例及其作业分析
逢7拍腿游戏
total=99
i=random.randint(0,10)
print("随机生成数为:",i)
total=total-i+1
for number in range(i,100):
if number %7==0:
print(number)
continue
else:
string=str(number)
if string.endswith('7'):
print(number)
continue
else: pass
total-=1
print("从1数到99共拍腿",total,"次。")
这个案例中需要在1~10之间随机一个数字开始进行拍腿游戏,每次缝7拍腿,最后计算拍腿的数字以及拍腿的次数,由于加入了随机数生成,所以total的初始值变成了未知,所以在开始计算之前需要对total的值进行处理,案例中continue的使用成了点睛之笔,如果进入循环的选择语句后经过continue后直接跳出循环,所以不经过循环的次数都被减去,计算出拍腿次数。
篮球弹跳
篮球从一定高度向下掉落,每一次弹起的高度,都是前一次高度的三分之一。一次掉落和一次弹起视为一次弹跳。假设篮球初始高度为15米。
请用程序实现:输入篮球弹跳的次数num,计算num次后篮球所在的高度,并将计算结果输出。
high=15
def bounce(num):
if num==0:
return high
else:
return high/3**num
result=bounce(num)
print("篮球在弹起",num,"次后剩余的高度为:",result)
首先定义一个函数:当输入为0时,代表弹跳0次,所以高度为15米,否则根据弹跳次数计算剩余高度。
五、学习心得
通过这次的学习首先成功的安装了python以及anaconda,并且配置了其虚拟环境,并且在python中下载了所需要的库,并且创建了虚拟环境,解决了文件路径中文问题,并且通过了开题答辩,从而得知的报告的可行性的发展以及中间存在的问题,当然除了报告,还学习了python的基础并且深刻体会了相关语句的操作,通过相关的案例以及作业,从中找到了许多问题,例如拍腿问题中,continue语句的退出逻辑,在加入随机数后,解决运行的bug。所以这次学习的知识总结如下:1、VGG16模型的认知。2、python环境的搭建与配置3、python基础知识的学习与相关语句的应用。