【发布时间】:2019-02-14 14:36:16
【问题描述】:
在 Michael Nielsen 的神经网络教程中,他有以下代码:
def update_mini_batch(self, mini_batch, eta):
"""The ``mini_batch`` is a list of tuples ``(x, y)``, and ``eta``
is the learning rate."""
nabla_b = [np.zeros(b.shape) for b in self.biases]
nabla_w = [np.zeros(w.shape) for w in self.weights]
for x, y in mini_batch:
delta_nabla_b, delta_nabla_w = self.backprop(x, y)
nabla_b = [nb+dnb for nb, dnb in zip(nabla_b, delta_nabla_b)]
nabla_w = [nw+dnw for nw, dnw in zip(nabla_w, delta_nabla_w)]
self.weights = [w-(eta/len(mini_batch))*nw
for w, nw in zip(self.weights, nabla_w)]
self.biases = [b-(eta/len(mini_batch))*nb
for b, nb in zip(self.biases, nabla_b)]
我了解元组和列表是什么,我了解 zip 函数在做什么,但我不了解变量 nb、dnb、nw 和 dnw 如何在这 2 行代码中更新:
nabla_b = [nb+dnb for nb, dnb in zip(nabla_b, delta_nabla_b)]
nabla_w = [nw+dnw for nw, dnw in zip(nabla_w, delta_nabla_w)]
谁能帮助解释这两行中发生的魔法?
【问题讨论】:
-
欢迎来到 StackOverflow!请澄清:a)你的意思是来自neuralnetworksanddeeplearning.com的一章?哪一个? b)
np是numpy? -
您是否 (a) 不了解
for如何出现在列表中:[x for y in z],或者 (b) 如何同时分配两个名称:for a, b in x? -
我想分别澄清
nb+dnb for nb和dnb in zip(nabla_b, delta_nabla_b)开始。
标签: python python-3.x list list-comprehension