首页 > 解决方案 > 在神经网络的第一层计算线性前向

问题描述

我正在尝试构建一个简单的前馈神经网络,将猫的图像分类为非猫或猫(0 或 1)。我对如何计算 Z 或 NN 中第一层的线性激活的理解有点模糊。

如果我有第一层的以下参数(伪代码):

layer_size = 20
training_examples(m) = 500
X = (12288, 500) # my input, 500 64x64x3 images of cats
W = (layer_size, len(X)) # first hidden layer, (20, 12288)

您将如何使用这些参数计算线性激活(或 Z)?

据我了解,您的数据集应该一次全部输入网络(每个时期)。我没有得到的是,当 X 包含的列数多于 W 的行数(500 对 20)时,您如何实现这一点。我应该广播 W 25 次,还是直到它包含足够的行以匹配训练示例(或 m)的数量?

这是我当前的线性前向(Z)的python实现。

Z = []
for i in range(len(W)):
    Z.append(sum(W[i] * A[i] for W[i], A[i] in zip(W[i], A[i])) + b[i])

目前,代码循环遍历 W 的每一行,将元素乘以 A[i] 的列(或在本例中为 X),然后将其相加。为了使其正常工作,我是否应该循环遍历 A 的每一列并在此范围内广播 W ?

不幸的是,我没有 numpy 访问权限,所以我坚持这一点。

标签: pythonneural-network

解决方案


推荐阅读