吴恩达深度学习-神经网络基础(第5课:超参数调试、Batch正则化和程序框架)

3.1 调试处理(Tuning process)

超参数设定.jpg

3.2 为超参数选择合适的范围(Using an appropriate scale to pick hyperparameters)

3.3 超参数调试的实践:Pandas VS Caviar(Hyperparameters tuning in practice: Pandas vs. Caviar)
ps:这里的pandas不是Python的pandas包。
这里提到了两种方式,一种是不断好好优化一个模型;另一种是训练多个模型,选择最好的。

3.4 归一化网络的激活函数(Normalizing activations in a network)

在深度学习兴起后,最重要的一个思想是它的一种算法,叫做Batch归一化。
Batch归一化会使你的参数搜索问题变得很容易,使神经网络对超参数的选择更加稳定,超参数的范围会更加庞大,工作效果也很好,也会是你的训练更加容易,甚至是深层网络。

3.5 将 Batch Norm 拟合进神经网络(Fitting Batch Norm into a neural network)
3.6 Batch Norm 为什么奏效?(Why does Batch Norm work?)

3.7 测试时的 Batch Norm(Batch Norm at test time)
3.8 Softmax 回归(Softmax regression)
3.9 训练一个 Softmax 分类器(Training a Softmax classifier)
二分类的分类结果只有两种可能的标记0或1。
有一种logistic回归的一般形式,叫做Softmax回归,能让你在试图识别某一分类时做出预测,或者说是多种分类中的一个,不只是识别两个分类
Softmax的输出不同分类的结果是每个分类的概率。

3.10 深度学习框架(Deep Learning frameworks)
3.11 TensorFlow

深度学习框架真的蛮多的,教授提到了一些选择的技巧。实际上选择框架也确实重要,假如就是从事这个话,不然搞了几年这个框架不行了,又要换,非浪费比较多的时间及学习成本。
首先便于编程,其次运行效率,再者开源。另外我想就是背后的公司咋样。

tensorflow的学习资源在B上的有很多。莫凡的教程也可以看看。
我使用的是IPython来运行教授的例子,实际上在jupyter里面使用应该体验更好一些。

In [11]: import tensorflow as tf
In [12]: import numpy as np

In [13]: w = tf.Variable(0,dtype = tf.float32)
In [14]: cost = tf.add(tf.add(w**2,tf.multiply(- 10.,w)),25)
In [16]: train = tf.train.GradientDescentOptimizer(0.01).minimize(cost)
In [17]: init = tf.global_variables_initializer()

In [18]: session = tf.Session()
In [19]: session.run(init)
In [20]: session.run(w)
Out[20]: 0.0

In [21]: print(session.run(w))
0.0
In [22]: session.run(train)
In [23]: print(session.run(w))
0.099999994

In [24]: for i in range(1000):
    ...:     session.run(train)
    ...: print(session.run(w))
    ...: 
4.9999886

参考资料
[网易云课堂课程](https://mooc.study.163.com/smartSpec/detail/1001319001.htm?from=study)
C2M3 slides

你可能感兴趣的:(吴恩达深度学习-神经网络基础(第5课:超参数调试、Batch正则化和程序框架))