论文阅读笔记(一)——DESCENDING THROUGH A CROWDED VALLEY—BENCHMARKING DEEP LEARNING OPTIMIZERS

前言

把论文阅读笔记换一个地方存放了,当新的开始了~ 之前的到15的,其实很多都是偏应用的,所以这次从头认真看看吧~以前都是翻译软件阅读,现在顺便练习一下英语的阅读。

这是一篇关于优化器的论文

个人博客地址:二两酥肉

论文地址:Descending through a Crowded Valley - Benchmarking Deep Learning Optimizers

1、论文概念

1.1 论文摘要

优化器的选择被认为是在深度学习中最关键的设计决策之一,并且它不是一个简单的工作。越来越多的文献如今列出了上百种优化器方法。在缺乏清晰的理论指导和准确的权威证据下,关于优化器的决策往往充满奇闻轶事(anecdotes,有点奇怪,但是不知道怎么翻译合适)。在这项工作中,文章旨在取代这些奇闻轶事,如果不是一种结论性的排名,那么至少也要提供一种证据支持的启发式教学法。为此,文章对15个特别流行的深度学习优化器执行了广泛、标准化的基准测试,同时给出了广泛的可能选择的简明概述。分析了大约50000次单独的运行,文章得出了以下三点:(1)优化器表现在不同的任务重差异很大。(2)文章观察到,使用默认参数评估多个优化器的工作效果与调整单个固定优化器的超参数差不多。(3)虽然文章不能清楚地识别一个优化方法在所有测试任务中占主导地位,但是文章找到了一个显著减少的特定算法和参数选择的子集(subset),这些优化器和参数选择通常会导致文章的实验中具有竞争性的结果:ADAM仍然是一个强有力的竞争者,新的方法不能显著地和持续地超过它。文章把所有的实验结果进行了开源,让他们称为可用的具有挑战性和良好调整的基线。这允许在评估新的优化方法时进行更有意义的比较,而不需要进一步的计算工作。

1.2 创新点

1.2.1 优化器选择的公正实验

  • 因为优化器很多,但是目前没有一个较为大规模的测验,测试不同优化器的基准测试,如果要想用相关的优化器只能去看论文原著,而原著都会吹自己,所以参考性并不会那么大。这篇文章进行了不涉及原著的第三方实证比较,对各种优化器进行了测试。

1.2.2 提供优化器使用指导

作者提出**“我们要为更有意义的、非增量的研究提供动力。”**,对不同的深度学习任务,提出了不同的使用指导,避免了大规模无效的比较。比如ADAM仍然是一个综合可行的选择,而NAG和RMSPROP在单个问题上优很好的效果。

1.2.3 总结一下

感觉实验还是比较充足,后面那一堆大图就可以看出来了,但是感觉有点太宽泛了,比如视觉任务上只是选择了MNIST和cifar10,100这种数据集,而网络代表性也不是非常具有权威性。感觉作者想做的太大了,导致在实际实验中,这篇论文可以提供参考性,但是不具备权威性。不过这篇论文很不错,值得读一下。

2、正文

2.1 工作

2.1.1一个优化算法和时间表的简明总结

提供了一个超过100个优化器和超过20个超参数计划组的紧凑广泛的列表。(表在文末,太大了,两张表没涨占一页,很丰富)

2.1.2在深度学习任务上进行的广泛的优化器测试

进行了大规模优化器基准测试,使用4种不同的调度8个深度学习问题评估了14个优化器,并调整了几十个超参数设置。(确实不少了)

2.1.3分析超过5000次优化器的运行

  • 评估带有默认超参数的多个优化器与为固定优化器微调超参数的效果差不多
  • 对总体而言,使用一个额外的未微调( untuned)的学习率计划(schedule)是有帮助的,但其效果很大程度上取决于优化器和测试问题。
  • 虽然在所有测试的工作负载中没有明显占主导地位的优化器,但文章测试的一些算法表现出高度可变的性能(就是特定任务上有些优化器效果差异很大),其他的算法则表现良好。文章因此不推荐其中的任何一个,因为文章找不到一个具有统治地位的明显的赢家。

2.1.4对未来优化器基准测试的开源基线

提供了开源的结果代码,可以减少优化器比较所需的预算(确实)。并且推荐大家加入这个实验(意思是让你给个star)。

开源代码:文中提供的github链接

2.2 相关工作(同类论文推荐)

[1] Frank Schneider, Lukas Balles, and Philipp Hennig. DeepOBS: A Deep Learning Optimizer Benchmark Suite. In 7th International Conference on Learning Representations, ICLR, 2019.
[2] Prabhu Teja Sivaprasad, Florian Mai, Thijs V ogels, Martin Jaggi, and Francois Fleuret. Optimizer Benchmarking Needs to Account for Hyperparameter Tuning. In 37th International Conference on Machine Learning, ICML, 2020

2.3 实验方法

从100多个优化器中选出了14种优化器作为基准测试,使用了4种微调(Tuning)运算和4种学习率方法。

2.3.1 深度学习问题

选择了八种深度学习问题…现在看其实还是可以继续做下拓展,作者这方面有点吹大了,CV的只有分类…(CV任务添加完整,一篇CVPR预定好吧

2.3.2 优化器选择

选择了出现最多的14种优化器

2.3.3 Tuning

Budget深度学习的优化器经常向提供超参数。用户要么依赖默认建议,要么使用以前的实验经验设置它们,要么使用额外的微调运行来找到性能最佳的设置,文章的基准测试中的所有优化器都有可微调的超参数,文章考虑四种不同的微调预算。

微调方法(Tuning method): 针对大、中、小三种预算,采用不提前停止的随机搜索优化参数(比网格化更高效,比贝叶斯优化更容易实现和并行化)。在文中,提出因为超参数在不同优化器中有相似的名称,但是适合范围不同,所以文章没有采用最直接的方法,相同超参数使用相同的搜索空间,而是选择了不同的方位。超参数表如下图:超参数选择表3.3。

2.3.4 学习率

选择了四种最受欢迎的学习率方法:

  • 恒定的学习速率(A constant learning rate;)
  • 余弦衰变的学习率(A cosine decay)作为平滑衰竭学习率的例子
  • 带有热重启的余弦衰减学习率(A cosine with warm restarts schedule)作为周期性学习率的例子
  • A trapezoidal schedule from the warm-up schedules(水平有限,翻译不出来,主要warm-up不知道该怎么翻译)

2.4 实验结果 Results

2.4.1 优化器直接使用的效果如何(work out-of-the-box)

文章构建了一个15*15的矩阵来表示性能增益,cifar10的结果如下,可以看出使用小预算微调后(tuning)的AMSBOUND(1)比使用默认参数的SGD(15)性能好2.4%。所有实验结果图看3.4。

图中的橙色表示,优化器的默认设置性能很差,能被任何经过优化的优化器大白,比如Adadelta、LA(Mom)、LA(Radam)等。,而ADAM、NADAM、RADAM等几个优化器在默认参数时都拥有了良好的性能。图3.4把所有不同深度学习问题下实验结果列出,在以后实验时可以进行参考。

y轴是没有微调(untuned)的优化器,x轴是微调后的优化器。结果是通过10个随机数种子的恒定学习率(constant schedule)。比如最左下角微调后(tuning)的AMSBound(1)比未微(untuned)的SGD(15)高2.4%。

2.4.2 微调(tuning)和学习率(schedules)的作用

我们考虑通过不同的预算(budget)和学习率(schedules)实现的最终性能,以量化微调(tuning)和应用无参数学习率(schedules)的有效性,增加budget可以提高效果,尽管回报会递减。例如,与默认参数(没有计划)相比,使用没有任何学习率(schedules)的中等预算会带来大约3.4%的中间相对改进。应用未微调(untuned)的学习率(schedules)也可以提高中间性能。例如,与默认参数相比,较大的微调预算加上梯形学习率计划将导致性能的相对改善中值约为5.2%。然而,虽然这些趋势在中间值中保持不变,但它们各自的影响在优化器和问题之间有很大的差异,从下图中显示的各条线的嘈杂结构中可以明显看出

灰色的线条:(通过三次样条进行平滑,仅用于视觉引导)显示了在特定的微调(tuning)预算和调度下(与没有调度的一次性调优相比),所有15个优化器在所有8个问题上的相对改进。
橙色的线条:所有直线的中值。
阴影区域:表示第25和第75百分位之间的区域。
随着预算和时间表的增加,人们可以期望平均性能的提高(橙色线),但对个别设置来说不是自动的(即,灰色线可以不受影响,甚至减少)。

2.4.3 哪些优化器在优化后效果好

比较了优化器在所有8个问题中的性能,效果如下图。没有一种优化器能够在所有任务中支配竞争对手。然而,一些优化器通常表现良好,而其他优化器的行为可能有很大差异,最明显的是在VAEs上表现很差。完整实验结果在3.5。可以看出,在NAG在图像分类任务上打败ADAM,在自然语言方向上,RMSPROP有很大优势。

图注:所有测试优化器的10个随机种子对所有8个优化问题的平均测试集性能,使用大预算调优和无学习率计划。调整后的ADAM优化器的一个标准差显示为红色的误差条(I:为了便于阅读,省略了其他方法的错误条)。标记了未微调(untuned)的ADAM (M)和ADABOUND (L)的性能,以供参考。每个轴的上界代表在基准测试中获得的最佳性能,下界的选择是根据ADAM的默认参数的性能来选择的。

3、实验图表

3.1 一个优化算法和时间表的简明总结的两张表

3.2 学习率设置表

3.3 超参数选择表

3.4 优化器调优与默认参数下的实验结果

查看之前图时,您可能会意识到很少有对角线条目包含负数。由于对角线条目反映了调优各自任务时优化器内部性能的变化,这可能一开始会让人觉得很不直观。从理论上讲,这可能发生,如果选择各自的优化分布不佳,调优随机性只是“倒霉”,或者我们观察明显更严重的结果,额外的种子。如果我们比较下图的数据我们可以看到最负面的对角线项消失或至少减少大小。对于后两个图,我们考虑到更多的调优运行,只考虑此调优过程使用的种子。负对角线项的影响减小的事实表明,它们主要是由后面提到的两个原因造成的。

3.5 在不同任务上,优化器的效果

图14:在所有8个优化问题上,所有测试优化器在10个随机种子上的平均测试集性能,使用小预算进行调优,没有学习速率计划。调整后的ADAM优化器的一个标准差显示为红色误差条(I)。未调整版本的ADAM (M)和ADABOUND (L)的性能被标记出来,以供参考。请注意,每个轴的上界代表在基准测试中获得的最佳性能,而下界的选择与使用默认参数的ADAM的性能有关。附录中的表格版本如表7所示。第3节中提到的高级趋势也适用于图14中较小的调优预算。也就是说,为几个未调优的算法(这里标记为ADAM和ADABOUND)使用最佳优化器将在大多数问题上以更少的努力获得良好的性能。向这个选择中添加调优版本ADAM(或其变体)将导致非常具有竞争力的性能。然而,绝对顶级的性能是通过在不同的问题上改变优化器来实现的。请注意,虽然中等预算是小预算的真正超集,但并不是说它总是表现得更好。我们的调优过程可以保证,对于用于调优的种子,在中等预算下的验证性能至少比在小预算下的性能好。但是由于平均多个种子和报告测试性能而不是验证性能,这个层次结构不再得到保证。我们在附录c中进一步讨论了对多个种子进行平均的可能影响。在考虑图15和图16中的余弦或梯形学习速率计划时,也出现了同样的高水平趋势。我们还可以看到,当添加计划时,顶级性能通常会提高(参见图4和图16)。对比图4和图17,我们可以评估优化方法的泛化性能,不仅针对一个看不见的测试集,而且针对不同的性能度量(准确性而不是损失)。再一次,当考虑到训练损失的表现时,不同问题的不同表现的整体图景仍然是一致的。与显示测试集性能的数据类似,我们无法确定一个明显的赢家,尽管ADAM和它的变体,如RADAM的表现始终接近顶部。请注意,虽然图17显示了培训损失,但优化器仍然要进行调优,以实现最佳的验证性能(即,如果可用,则准确性,否则损失)。

Figure 14: Mean test set performance over 10 random seeds of all tested optimizers on all eight optimization problems using the small budget for tuning and no learning rate schedule. One standard deviation for the tuned ADAM optimizer is shown with a red error bar (I). The performance of the untuned versions of ADAM (M) and ADABOUND (L) are marked for reference. Note, the upper bound of each axis represents the best performance achieved in the benchmark, while the lower bound is chosen in relation to the performance of ADAM with default parameters. Tabular version available in the Appendix as Table 7. The high-level trends mentioned in Section 3 also hold for the smaller tuning budget in Figure 14. Namely, taking the winning optimizer for several untuned algorithms (here marked for ADAM and ADABOUND) will result in a decent performance in most problems with much less effort. Adding a tuned version ADAM (or variants thereof) to this selection would result in a very competitive performance. The absolute top-performance however, is achieved by changing optimizers across different problems. Note, although the medium budget is a true superset of the small budget it is not given that it will always perform better. Our tuning procedure guarantees that the validation performance on the seed that has been used for tuning is as least as good on the medium budget than on the small budget. But due to averaging over multiple seeds and reporting test performance instead of validation performance, this hierarchy is no longer guaranteed. We discuss the possible effects of averaging over multiple seeds further in Appendix C. The same high-level trends also emerge when considering the cosine or trapezoidal learning rate schedule in Figures 15 and 16. We can also see that the top performance in general increase when adding a schedule (cf. Figure 4 and Figure 16). Comparing Figure 4 and Figure 17 we can assess the generalization performance of the optimization method not only to an unseen test set, but also to a different performance metric (accuracy instead of loss). Again, the overall picture of varying performance across different problems remains consistent when considering the training loss performance. Similarily to the figures showing test set performance we cannot identify a clear winner, although ADAM ands its variants, such as RADAM perform near the top consistently. Note that while Figure 17 shows the training loss, the optimizers have still be tuned to achieve the best validation performance (i.e. accuracy if available, else the loss).

图15:使用中等预算调优和余弦学习率计划对所有8个优化问题,所有测试优化器的10个随机种子的平均测试集性能。调整后的ADAM优化器的一个标准差显示为红色误差条(I)。未调整版本的ADAM (M)和ADABOUND (L)的性能被标记为参考(这次使用余弦学习速度计划)。注意,每个轴的上界代表在基准测试中获得的最佳性能,而下界的选择与ADAM的默认参数(没有调度)有关。附录中的表格版本如表8所示。
Figure 15: Mean test set performance over 10 random seeds of all tested optimizers on all eight optimization problems using the medium budget for tuning and the cosine learning rate schedule. One standard deviation for the tuned ADAM optimizer is shown with a red error bar (I). The performance of the untuned versions of ADAM (M) and ADABOUND (L) are marked for reference (this time with the cosine learning rate schedule). Note, the upper bound of each axis represents the best performance achieved in the benchmark, while the lower bound is chosen in relation to the performance of ADAM with default parameters (and no schedule). Tabular version available in the Appendix as Table 8.

图16:所有测试优化器的10个随机种子对所有8个优化问题的平均测试集性能,使用大预算调优和梯形学习率计划。调整后的ADAM优化器的一个标准差显示为红色误差条(I)。未调整版本的ADAM (M)和ADABOUND (L)的性能标记为参考(这次使用梯形学习速率计划)。注意,每个轴的上界代表在基准测试中获得的最佳性能,而下界的选择与ADAM的默认参数(没有调度)有关。附录中的表格版本如表9所示。
Figure 16: Mean test set performance over 10 random seeds of all tested optimizers on all eight optimization problems using the large budget for tuning and the trapezoidal learning rate schedule. One standard deviation for the tuned ADAM optimizer is shown with a red error bar (I). The performance of the untuned versions of ADAM (M) and ADABOUND (L) are marked for reference (this time with the trapezoidal learning rate schedule). Note, the upper bound of each axis represents the best performance achieved in the benchmark, while the lower bound is chosen in relation to the performance of ADAM with default parameters (and no schedule). Tabular version available in the Appendix as Table 9.

图17:所有测试优化器的10个随机种子在所有8个优化问题上的平均训练损失性能,使用大预算进行调优,没有学习速率计划。调整后的ADAM优化器的一个标准差显示为红色误差条(I)。未调整版本的ADAM (M)和ADABOUND (L)的性能被标记出来,以供参考。注意,每个轴的上界代表在基准测试中获得的最佳性能,而下界的选择与ADAM的默认参数(没有调度)有关。这个图与图4非常相似,但是显示的是训练损失性能而不是测试准确性(如果没有可用的准确性,则显示的是测试损失)。附录中的表格版本如表10所示。
Figure 17: Mean training loss performance over 10 random seeds of all tested optimizers on all eight optimization problems using the large budget for tuning and no learning rate schedule. One standard deviation for the tuned ADAM optimizer is shown with a red error bar (I). The performance of the untuned versions of ADAM (M) and ADABOUND (L) are marked for reference. Note, the upper bound of each axis represents the best performance achieved in the benchmark, while the lower bound is chosen in relation to the performance of ADAM with default parameters (and no schedule). This figure is very similar to Figure 4, but showing the training loss performance instead of the test accuracy (or test loss if no accuracy is available). Tabular version available in the Appendix as Table 10.

表6:图4的表格版本。在所有8个优化问题上,所有测试优化器的10个随机种子的平均测试集性能和标准偏差使用大预算调优和无学习率计划。为了可理解性,平均值和标准偏差被四舍五入。
Table 6: Tabular version of Figure 4. Mean test set performance and standard deviation over 10 random seeds of all tested optimizers on all eight optimization problems using the large budget for tuning and no learning rate schedule. For comprehensability, mean and standard deviation are rounded.

表7:图14的表格版本。在所有8个优化问题上,所有测试优化器的10个随机种子的平均测试集性能和标准偏差使用小预算调优和无学习率计划。为了可理解性,平均值和标准偏差被四舍五入。
Table 7: Tabular version of Figure 14. Mean test set performance and standard deviation over 10 random seeds of all tested optimizers on all eight optimization problems using the small budget for tuning and no learning rate schedule. For comprehensability, mean and standard deviation are rounded.

表8:图15的表格版本。在所有8个优化问题上,所有测试优化器在10个随机种子上的平均测试集性能和标准差使用中等预算调优和余弦学习率计划。为了可理解性,平均值和标准偏差被四舍五入
Table 8: Tabular version of Figure 15. Mean test set performance and standard deviation over 10 random seeds of all tested optimizers on all eight optimization problems using the medium budget for tuning and the cosine learning rate schedule. For comprehensability, mean and standard deviation are rounded

表9:图16的表格版本。在所有8个优化问题上,所有测试优化器的10个随机种子的平均测试集性能和标准偏差使用大预算的调优和梯形学习率计划。为了可理解性,平均值和标准偏差被四舍五入。
Table 9: Tabular version of Figure 16. Mean test set performance and standard deviation over 10 random seeds of all tested optimizers on all eight optimization problems using the large budget for tuning and trapezoidal learning rate schedule. For comprehensability, mean and standard deviation are rounded.

表10:图17的表格版本。在所有8个优化问题上,所有测试优化器的10个随机种子的平均训练集性能和标准偏差使用大预算调优和无学习速率计划。为了可理解性,平均值和标准偏差被四舍五入。
Table 10: Tabular version of Figure 17. Mean training set performance and standard deviation over 10 random seeds of all tested optimizers on all eight optimization problems using the large budget for tuning and no learning rate schedule. For comprehensability, mean and standard deviation are rounded.

3.6 一些其余的图

深度学习的数据子采样、随机权值初始化、dropout等方面给训练过程引入了随机性。因此,在一次运行中判断优化器的性能可能会由于随机波动而产生误导。在我们的基准中,我们为每个预算使用了10个不同的最终设置种子,以判断优化器的稳定性和结果。然而,为了保持基准测试的可行性,我们在调优时只使用单个种子,类似于单个用户的进度。这意味着我们的调优过程有时可能会选择超参数设置,这些超参数设置除了用于调优的超参数之外,甚至可能不会收敛于种子。图5演示了一个示例问题的这种行为,在这个示例问题中,我们使用网格搜索在整个调优过程中使用了10个种子。从图中可以看出,在一开始,随着学习速度的增加,性能会提高,然后是一个有时可以,但有时会出现偏差的区域。从这个“危险区域”选取超参数会导致不稳定的结果。在这种情况下,我们只考虑学习率,很明显,降低一点学习率以摆脱这个“危险区域”将导致一个更稳定,但同样性能良好的算法。然而,在更复杂的情况下,我们无法使用这样简单的启发式方法。例如,在调优多个超参数或超参数对性能的影响不那么直接时,可能会出现这种情况。因此,这个问题不是由不恰当地使用调优方法造成的,而是由不稳定的优化方法造成的。

图5:SGD在简单多层感知器上的性能。对于每个学习率,橙色()中的标记显示了将用于调优的初始种子,蓝色标记()显示了其他9个种子,它们的设置没有改变。所有种子的平均值用蓝线(-)表示,阴影区域(T)表示一个标准差。在我们的基准中,我们观察到小、中、大预算分别有18、24和17个发散种子。这大约相当于每个预算的0.5%。他们中的大多数发生在使用SGD(10、15,7例为小,中型和大型预算分别),ADAGRAD(5、3和5例小,中型和大型预算分别)或ADADELTA(3、5、3例小,中型和大型预算分别),这可能表明,现代适应方法不太容易出现这种行为。在使用固定计划时,这些情况都不会发生,而在使用梯形计划时,大多数情况都会发生(小型、中型和大型预算分别有11、11和9种情况)。然而,由于我们关于种子分化的数据非常有限,因此还不足以得出可靠的结论。

论文阅读笔记(一)——DESCENDING THROUGH A CROWDED VALLEY—BENCHMARKING DEEP LEARNING OPTIMIZERS相关推荐

  1. 论文阅读笔记:Improving Attacks on Speck32 / 64 using Deep Learning

    论文阅读笔记:Improving Attacks on Speck32 / 64 using Deep Learning 本文通过神经网络利用了减少轮数的 Speck 的差分性质.为此,作者对神经网络 ...

  2. 【论文阅读笔记】Real-Time Video Super-Resolution on Smartphones with Deep Learning, Mobile AI 2021 Challenge

    论文地址:https://arxiv.org/abs/2105.08826 论文小结   这比赛的目标是在移动手机上得到实时运行的视频超分算法,目标在480p(实际上是180∗30180*30180∗ ...

  3. 论文阅读笔记--Monocular Human Pose Estimation: A Survey of Deep Learning-based Methods 人体姿态估计综述

    趁着寒假有时间,把之前的论文补完,另外做了一点点笔记,也算是对论文的翻译,尝试探索一条适合自己的论文阅读方法. 这篇笔记基本按照原文的格式来,但是有些地方翻译成中文读起来不太顺,因此添加了一些自己的理 ...

  4. 论文阅读:(2020版)A Survey on Deep Learning for Named Entity Recognition 命名实体识别中的深度学习方法

    A Survey on Deep Learning for Named Entity Recognition 命名实体识别中的深度学习方法 目录 A Survey on Deep Learning f ...

  5. 论文阅读笔记:Multi-Turn Response Selection for Chatbots with Deep Attention Matching Network

    提示:阅读论文时进行相关思想.结构.优缺点,内容进行提炼和记录,论文和相关引用会标明出处. 文章目录 前言 介绍 模型细节 问题符号化 模型结构 注意力模块-Attentive Module 整理表示 ...

  6. 【论文阅读笔记】老照片修复——Old Photo Restoration via Deep Latent Space Translation

    目录 前言 一.问题与核心思想 二.核心工作 1.将X,R,Y映射到响应的潜在空间 2.训练映射网络 3.人脸增强网络 实践 前言 笔记主要学习的是CVPR2020上发表的一篇Oral文章,主要思路是 ...

  7. [论文阅读笔记]SEMANTIC ADVERSARIAL ATTACKS: PARAMETRIC TRANSFORMATIONS THAT FOOL DEEP CLASSIFIERS(ICCV)

    SEMANTIC ADVERSARIAL ATTACKS: PARAMETRIC TRANSFORMATIONS THAT FOOL DEEP CLASSIFIERS(2019 ICCV) 文章简介: ...

  8. 【图像修复】----论文阅读笔记《EdgeConnect: Generative Image Inpainting with Adversarial Edge Learning》

    文章目录 论文链接 概述 方法 实验 结果 论文链接 github地址:https://github.com/knazeri/edge-connect 论文地址:https://arxiv.org/p ...

  9. 论文阅读笔记《DPGN: Distribution Propagation Graph Network for Few-shot Learning》

    小样本学习&元学习经典论文整理||持续更新 核心思想   本文提出一种基于图神经网络的小样本学习算法(DPGN).先前基于图神经网络的小样本算法通常将每个样本当作一个结点,然后通过结点之间的关 ...

  10. 【论文阅读笔记】High Quality Monocular Depth Estimation via Transfer Learning

    文章目录 High Quality Monocular Depth Estimation via Transfer Learning Abstract 1. Introduction 2. Relat ...

最新文章

  1. 现在的编译器还需要手动展开循环吗_一例 Go 编译器代码优化 bug 定位和修复解析...
  2. linux之变量的设置与显示
  3. Python学习笔记:异步IO(2)
  4. 适合网页设计师的11个不错的Chrome插件
  5. 17种元器件PCB封装图鉴,美翻了
  6. android switch 未定义,在switch语句中初始化时未定义的变量?
  7. APICloud学习笔记之窗体跳转
  8. 什么样的公司卖什么货!
  9. python创建一个文本文件_利用python如何实现创建一个文本文件
  10. 基于matlab的捷联惯导算法编程(二)
  11. python实现KM算法
  12. 8位数控分频器的设计_基于FPGA的通用数控分频器的设计与实现
  13. Matlab-香农编码
  14. Unity 车辆跟随路径点缓动移动
  15. panabit环境搭建
  16. 【ROOT from CERN】——TSpectrum2类与二维寻峰
  17. linux下at24c02驱动程序,Linux下iic(i2c)读写AT24C02
  18. 新建STM32F427IIH标准库工程
  19. web設計常用代碼收集
  20. 【Web项目】点餐系统

热门文章

  1. 清空表与删除表mysql
  2. aspx中如何加入javascript
  3. 分类数据转换为树形结构
  4. css3的clip-path方法剪裁实现(三角形,多边形,圆,椭圆)
  5. 大屏scroll滚动轴样式
  6. 如何布局电子商务网站
  7. SqlServer性能检测之Sql语句排查
  8. SqlServer智能提示工具
  9. Hibernate之懒加载
  10. python3.6下载步骤_python3实现文件下载的方法总结