每周bug(4.22-4.26第九周)

1. os.listdir()会出现排序错乱问题

**
files = os.listdir(path)
解决方法是插入:

    files.sort(key=lambda x: int(x[:-4]))

其中lambda是匿名函数

copy自:https://blog.csdn.net/zjuxsl/article/details/79437563

一个语法:

lambda argument_list: expression表示的是一个函数。lambda函数(匿名函数)

lambda-Python预留的关键字,argument_list和expression-由用户自定义
argument_list参数列表。它的结构与Python中函数(function)的参数列表是一样的,可以有很多形式,例如:

a, b / a=1, b=2 / *args /**kwargs /a, b=1, *args / 空 /…

expression:一个关于参数的表达式。表达式中出现的参数需要在argument_list中有定义,并且表达式只能是单行的。

1/ None a+b /sum(a) /1 if a>10 else 0

三个特性:

  1. lambda函数是匿名的:所谓匿名函数,通俗地说就是没有名字的函数。lambda函数没有名字。
  2. lambda函数有输入和输出:输入是传入到参数列表argument_list的值,输出是根据表达式expression计算得到的值。
  3. lambda函数一般功能简单:单行expression决定了lambda函数不可能完成复杂的逻辑,只能完成非常简单的功能。由于其实现的功能一目了然,甚至不需要专门的名字来说明。
  • 下面是一些lambda函数示例:

lambda x, y: xy;函数输入是x和y,输出是它们的积xy
lambda:None;函数没有输入参数,输出是None
lambda *args: sum(args); 输入是任意个数的参数,输出是它们的和(隐性要求是输入参数必须能够进行加法运算)
lambda **kwargs: 1;输入是任意键值对参数,输出是1

四个用法:

  1. filter函数。此时lambda函数用于指定过滤列表元素的条件。例如filter(lambda x: x % 3 == 0, [1, 2, 3])指定将列表[1,2,3]中能够被3整除的元素过滤出来,其结果是[3]。
  2. sorted函数。此时lambda函数用于指定对列表中所有元素进行排序的准则。例如sorted([1, 2, 3, 4, 5, 6,7, 8, 9], key=lambda x: abs(5-x))将列表[1, 2, 3, 4, 5, 6, 7, 8,9]按照元素与5距离从小到大进行排序,其结果是[5, 4, 6, 3, 7, 2, 8, 1, 9]。
  3. map函数。此时lambda函数用于指定对列表中每一个元素的共同操作。例如map(lambda x: x+1, [1,2,3])将列表[1, 2, 3]中的元素分别加1,其结果[2, 3, 4]。
  4. reduce函数。此时lambda函数用于指定列表中两两相邻元素的结合条件。例如reduce(lambda a, b: ‘{},{}’.format(a, b), [1, 2, 3, 4, 5, 6, 7, 8, 9])将列表 [1, 2, 3, 4, 5, 6, 7, 8, 9]中的元素从左往右两两以逗号分隔的字符的形式依次结合起来,其结果是’1, 2, 3, 4, 5, 6, 7, 8, 9’。

2.训练可视化出现的问题

43: 886.531677, 890.379333 avg, 0.000000 rate, 5486.371388 seconds,
5504 images

我把训练日志可视化了出现三个问题:

  • iou离1差太远了吧?
  • loss超级大,应该是梯度爆炸的原因?降低学习率试试
  • 学习率一直是0 ?

每周bug(4.22-4.26第九周)_第1张图片
每周bug(4.22-4.26第九周)_第2张图片

你可能感兴趣的:(每周bug(4.22-4.26第九周))