|
本帖最后由 Happy清子 于 2019-2-19 19:08 编辑
日期:2.19【第二天】
Q1:https://github.com/zlkanata/DeepGlobe-Road-Extraction-Challenge
dataset的数据集里面是不是空Q2[size=14.6667px]:里面0字节的Unix可执行文件是什么
Q3:项目多py文件,我该从哪里下手啊,怎么理清楚这个程序的逻辑
嗯,对于这种AI项目,一般分train和test两个分支。可以从train.py文件开始,先了解整个项目的大致框架。然后再看调用了哪些模块,逐个突破。
模块一般有数据读取(dataset部分)、网络构建(networks)、损失函数(loss.py)等部分组成
在看模块代码的时候,可以用调试功能帮助自己理解代码
Q4:jupyter如何调试
[size=13.3333px]用pycharm调试好,jupyter没有直接支持.py文件,一般要把整个文件内容复制到notebook上
Jupyter notebook接力赛(9)Jupyter notebook调试
https://bbs.easyaiforum.cn/forum.php?mod=viewthread&tid=97&fromuid=5
(出处: 易学智能)
这是jupyter的,感觉不是很方便
Q5:如果这样的话,我把py复制到一个ipynb格式的文件里面的话,是不是就可以深入到另一个文件的函数中调试了呢?
根据经验,jupyter只能在单个notebook里面调试,不会跳转到别的notebook
Q6:一个AI任务的训练时间到底是哪些因素相关的(同等硬件条件下)?1、模型的结构决定了参数的多少,参数多自然训练时间长。2、训练数据集的大小?
[size=13.3333px]1-网络input size:比如yolov3 608 训练起来会比yolov3 416慢 2-训练总的epoch:一个epoch表示把所有训练集中的所有数据训一遍 3-训练策略:比如有的代码训练500次就开始验证,有的代码采用coss-validation等,这些策略都有影响 4-数据预处理:有的网络输入需要先经过数据增强、数据清洗等步骤,这也会影响训练时间,这部分基本都在用CPU.[size=13.3333px]当然大模型每训练一个batch比小模型要慢,正如你所说,复杂的网络模型也会影响训练时间。
Q7:我不是很确定啊,比如一个1000个样本的训练集,一定会比只有500个样本的训练集所需要的时间更长?
训练集*很大的epoch会比大训练集*小epoch更耗时
Q8:你说到这个inputsize,我有个问题,我们通常输入一个网络的原始图片,是必须按照网络的inputsize的要求呢,还是大于就好?
对于图像识别(分类)而已,由于最后时全连接层,因此固定了网络的输入大小,比如vgg用于图像分类的输入是224*224
如果是全卷积网络,则对输入没有限制。
不过input也不能过大,因为显存有限。
一般从416到608左右,网络输入很少有1500+的
Q9:比如minst数字识别数据集,是必须输入时28*28呢?还是说输入的图片大于这个尺寸就行?
[size=13.3333px]mnist数据集已经被预处理为28*28了,这个大小不需要变动。
[size=13.3333px]
Q10:因为道路具有特殊性,它本来就是在空间延展的,如果很小的图像反而会丢失了这种空间特性,那这种问题可能就需要使用比较大的尺寸,然后中间又特意设计了空洞卷积来增加感受野。那这种问题怎么解决呢?我可能就是需要比较大的尺寸才能捕捉到道路的这种特征
用于图像分割的网络是全卷积网络,没有全连接层
不会限制input size
Q11:那这样说是不是所有的语义分割的网络都不会有全连接层,所谓的全连接层本身就是为那种输出1,2,3类别的场景分类而设计的
嗯,目前语义分割网络基本都舍弃了全连接层,用卷积层代替。一般FC层参数很多,容易导致过拟合,而且还会限制网络输入大小。
全连接目前所接触到的基本都用在分类方面
Q12:有个问题,我现在就是想复现上午说的那个Dlinknet网络,中午找到的这个数据集还不小,6000多个训练影像,我看他论文里面说4个1080都跑了40个小时,我现在只是复现,不在乎精度的话,是不是可以直接训练集删掉大部分啊,我这一个1080ti,怕要跑好这样的话每个epoch的时间就会减少了,是吧
嗯,可以只保留一部分数据
日期:1.24【第一天】
2.
Q:如何判断jupyter notebook的程序还在运行
A:
1-如果右上角的圆圈是实心,就是在运行。
2-还有cell上In[num]右边有*号,也表示正在运行
1.
Q: 同样的代码,各种设置、训练次数完全相同,为何两次运行的结果, 并会不完全相同?
A: 这个是正常的。因为现在大部分优化算法每次会随机选一部分数据放入网络,这样很难保证每次训练的效果完全一致。
另外训练时的epoch、batchsize、权重初始化方式、AI框架、框架版本、CUDA版本也可能会对训练效果造成影响。
|
|