MiniFlow - 自制玩具版 TensorFlow


神经网络由一个个神经元组成,简单而言,每个神经元会对输入进行一些简单运算,得到输出。而训练一个网络,则是调整网络中的参数,使得输出接近学习样本的期望输出。
比如,假设有一个网络只计算 y = w * x, 初始值 w=5。把 x=10 放进这个网络,会得到 y=50. 而我们预期 y=20. 通过训练这个网络,w 将会被调整为 w=2, 输出 y=20 则符合(接近)预期。

在实际应用中,一个网络会有不少参数,我们需要一个方法来调整这些参数。按我的理解,这个“调整参数”的过程就是机器学习的过程。

一个常见的神经网络,会由 Input layer, Hidden layer 和 output layer 组成。每层 layer 由众多神经元组成,Input/output layer 的神经元通常仅存储一个数值,本身不会进行运算。Hidden layer 的神经元则会对输入进行运算,将输出传给下一层。

By Glosser.ca - Own work, Derivative of File:Artificial neural network.svg, CC BY-SA 3.0, https://commons.wikimedia.org/w/index.php?curid=24913461

Udacity CarND-term1 Lesson 5 让我们自己去实现一个 Miniflow, 相当于一个玩具版的 Tensorflow. 通过实现 Miniflow, 可以体会到 Forward Pass 和 Backpropagation 的过程。
继续阅读“MiniFlow - 自制玩具版 TensorFlow”

CarND Project 1 - 车道检测


这是 Udacity 无人驾驶课程的笔记。第一个作业是检测车道,简单地说就是把路面上的行车线找出来。

Origin

target

环境准备

这个作业需要有 Anaconda 的环境,然后装上 jupyter notebook, OpenCV 等必要的库。
具体的安装方法可参考(fork 自 Udacity):
https://github.com/feichashao/CarND-Term1-Starter-Kit/blob/master/doc/configure_via_anaconda.md
其中,安装 tensorflow 的时候,可能会遇到 Google 被墙的情况,所以安装的时候最好先挂个代理,在安装前设置环境变量, 比如:

# export http_proxy=http://8.8.8.8:5187/ 
# export https_proxy=$http_proxy

颜色选择(Color Selection)

颜色是区分行车线的其中一个因素。对于一种颜色,可以有不同的编码方式,常见的是RGB,YUV等。

由于行车线的颜色与周围环境有一定区分,我们可以对RGB分别设定阈值,把有用的信息分离出来。
继续阅读“CarND Project 1 - 车道检测”