> ## Content Index
> Fetch the complete content index at: https://yinguobing.com/blog/llms.txt
> Use this file to discover other available public pages before exploring further.

# Udacity: 你的第一个神经网络
- URL: https://yinguobing.com/blog/udacity-your-first-neural-network/
- Published: 2017-10-31T14:21:09.000Z
- Updated: 2017-10-31T14:34:21.000Z
- Description: Udacity深度学习纳米学位项目一：你的第一个神经网络。项目中的一些坑以及感想。
- Author: 尹国冰
- Tags: 深度学习

# 背景

报名了Udacity的深度学习课程，课程中有若干实战项目，第一个项目需要构建一个神经网络，并用该网络预测每日自行车租客人数。

# 项目内容

项目中的数据是预先准备好的，并且训练所需的代码也有一部分已经写好。需要自己实现的主要是：

- sigmoid 激活函数

以及正向传播中的：

- 隐藏层输入
- 隐藏层输出
- 输出层输入
- 网络输出

和反向传播中的：

- 输出误差
- 更新权重

# Lessons learned

我花了大概2天的时间完成了这个项目，走了不少弯路。现在回顾一下，感觉有一些需要注意的地方，总结如下，也许对您有用。

## 理论与公式

Udacity提供了视频与网页介绍了梯度下降反向传播的原理，包括了公式的具体推导过程。**请不要为了节省时间而忽视这部分内容**。最好自己亲手推导一下，这样在后续写代码的时候能够做到心里有数。否则可能会被error, error term等术语困扰。

## 矩阵运算

自己动手画一下神经网络的结构，把各个节点、输入、权重的连线都画出来，手动写写输出的表达式，然后将表达式用矩阵相乘的方式写出来，这样可以避免后期写代码时候的矩阵维度匹配问题。

## 模型特质

共享单车模型的输出于之前的网络结构不同，它的最后一层并不是要输出概率，因此输出层的激活函数不是`sigmoid`函数。忽视这一点会造成误差计算的错误。

# 总结

最后，学习不能着急，要扎实。看到群里的小伙伴们有用几个小时就完成项目一的时候感觉很着急。然而基础不牢固就去做项目正好验证了一句老话“欲速则不达”。稳扎稳打才是适合我的学习方法。