加入收藏 | 设为首页 |

龙眼的功效与作用-9步教你用NumPy从头开始构建神经网络!

海外新闻 时间: 浏览:166 次
点击上放重视,All in AI我国

动机

假如你是一个了解神经网络怎么作业的初级数据科学家,或许仅仅对深度学习有所了解的机器学习爱好者,那么这篇文章是你不能错失的。以下是怎么运用NumPy从头开始构建神经网络的9个进程,从数据预处理到反向传达有必要要做的工作。

对机器学习、人工神经网络、Python语法和编程逻辑的底子了解是首选(但不是必需的,由于您可以随时学习)。

代码可在Github上取得。ML-in-NumPy/neural-net.ipynb at master edenau/ML-in-NumPy GitHub

1.初始化

第一步,导入NumPy。

2.数据生成

深度学习需求数据。虽然网上有许多洁净的数据龙眼的功效与作用-9步教你用NumPy从头开始构建神经网络!集,但为了简略起见,咱们将生成自己的数据集——关于输入a和b,咱们有输出a + b、a-b和| a-b |,生成10,000个基准点。

X_num_row, X_num_col = [2, 10000] # Row is no. of feature, col is no. of datum points
X_raw = np.random.rand(航班X_num_row,X_num_col) * 100

y_raw = np.concatenate(([(X_raw[0,:] + X_raw[1,:])], [(X_raw[0,:] - X_raw[1,:])], np.abs([(X_raw[0,:] - X_raw[1,:])])))
# for input a and b, output is a+b; a-b and |a-b|
y_num_row, y_num_col = y_raw.shape

3.Train-test割裂

咱们的数据集分为操练集(70%)和测验集(30%)。仅运用操练集来调整神经网络。测验集仅在操练完结时用于功能评价。

train_ratio=0.7
num_train_datum = int(train_ratio*X_num_col)
X_raw_train = X_raw[:,0:num_train_datum]
X_raw_test = X_raw[:,num_train_datum:]

y_raw_train = y_raw[:,0:num_train_datum]
y_raw_test = y_raw[:,num_train_datum:]

4.数据规范化

操练会集的数据是规范化的,因而每个规范化特征的散布是零均值和单位方差。然后可以将由上述进程发生的定标器应用于测验集。

这些线条或许看起来很吓人,但它们都是重复的。

因而,缩放器不包括来自咱们的测验设备的任何信息。咱们不期望神经网络在网络调整之前取得有关测验集的任何信息。

咱龙眼的功效与作用-9步教你用NumPy从头开始构建神经网络!们现在现已完结了数据预处理的4个进程。

5.神经网络构建

咱们运用Python中的类目标进行客观化。每个层(输入层在外)都有权重矩阵W、偏置矢量b和一个激活函数。每个图层都附加到名为neural_net的列表中。然后,该列表将表明您的彻底衔接的神经网络。

最终,咱们运用以下公式并经过计数对超参数的数量进行全面查看。可用的基准数量应该超越超参数的数量,不然它肯定会过度拟合。

N ^ l是第l层的超参数个数,L是层数龙眼的功效与作用-9步教你用NumPy从头开始构建神经网络!(不包括输入层)

6.前向传达

在给定一组权重和误差的情况下,咱们界说了前向传达的函数。层之间的衔接以矩阵方式界说为:

是element-wise激活函数,上标T表明矩阵的转置

激活函数是逐一界说的。 ReLU完成为→max(a,0),而sigmoid函数应回来→1 /(1 + e ^( - a)),其完成留给读者作为操练。

7.反向传达

这是咱们许多人底子不了解的最扎手的部分。一旦咱们界说了用于评价功能的丢失衡量规范,咱们就想知道当咱们打乱每个权重或误差时丢失衡量是怎么改变的。

咱们想知道每个权重和误差对丢失衡量的灵敏程度。

这由分数导数∂e/∂W(在代码中表明为dW)和∂e/∂b(在代码中表明为db)表明,而且可以剖析核算。

⊙表明元素乘法

这些反向传达方程假定只要一个基准y被比较。梯度更新进程中,由于每次迭代的功能仅受一个基准点的影响。可以运用多个基准来削减噪声,其间∂W(y_1,y_2,...)将是∂W(y_1),∂W(y_2),...的平均值,∂b也是如此。这些方程中没有显现这一点,可是鄙人面的代码中完成了这一点。

8.迭代优化

咱们现在具有用了操练神经网络的每个构建块。

一旦咱们知道权重和误差的灵敏性,咱们测验运用以下更新规龙眼的功效与作用-9步教你用NumPy从头开始构建神经网络!矩经过梯度下降迭代地最小化(因而减号)丢失衡量:

∂W=∂W - learning_rate *∂W
∂b=∂b - learning_rate *∂b

操练丢失应该跟着迭代而下降

9.测验

假如测验丢失不高于操练丢失龙眼的功效与作用-9步教你用NumPy从头开始构建神经网络!,该模型可以很好地推行。咱们还制作了一些测验用例,以了解模型的执行情况。

这便是你怎么运用NumPy从头开始构建神经网络的9个进程。你们中的一些人或龙眼的功效与作用-9步教你用NumPy从头开始构建神经网络!许现已运用一些高档结构(如TensorFlow,PyTorch或Keras)构建了神经网络。但是,仅运用初级库构建神经网络使咱们可以真实了解这个奥秘背面的数学。

我的完成绝不是构建和操练神经网络最有用的办法,还有很大的改善空间。

编译出品