<p><strong>我想知道将我的前进道具矢量化是否会使它更快</strong></p>
<p>对!</p>
<p><strong>如何将其矢量化?</strong></p>
<p>你想消除循环,找出向量代数,也能做同样的事情</p>
<p>让我们说<code>self.firstLayerWeights.shape</code>是<code>(N, D)</code>。你想要<a href="https://stackoverflow.com/questions/15616742/vectorized-way-of-calculating-row-wise-dot-product-two-matrices-with-scipy">calculate the row-wise dot product of this matrix with ^{<cd3>}</a>。假设您在一个名为<code>rowwise_dot</code>的函数中实现了这个逻辑</p>
<pre><code>def rowwise_dot(inpA, inpB):
# Calculate and return rowwise dot
</code></pre>
<p>现在有了<code>rowwise_dot</code>函数,可以添加整个<code>self.firstLayerBiases</code>向量,而无需循环</p>
<pre><code>rowwise_dot(self.firstLayerWeights, inputs) + self.firstLayerBiases
</code></pre>
<p>接下来,确保<code>self.relu</code>和<code>self.sigmoid</code>可以获取向量,并为向量的每个元素返回所需的内容。这可能涉及类似的把戏,如矢量化逐行点积</p>
<p>因此,最后你有:</p>
<pre><code>def forwardProp(self, inputs):
self.secondLayerNeurons = self.relu(rowwise_dot(self.firstLayerWeights, inputs) + self.firstLayerBiases)
self.outputNeurons = self.sigmoid(rowwise_dot(self.secondLayerWeights, self.secondLayerNeurons) + self.secondLayerBiases)
</code></pre>