这是我想要了解的神经网络神经元的Python表示
class Network(object):
def __init__(self, sizes):
self.num_layers = len(sizes)
self.sizes = sizes
self.biases = [np.random.randn(y, 1) for y in sizes[1:]]
self.weights = [np.random.randn(y, x)
for x, y in zip(sizes[:-1], sizes[1:])]
Run Code Online (Sandbox Code Playgroud)
这是我目前的理解:
self.num_layers = len(sizes):返回大小的项目数self.sizes = sizes:将自我实例大小分配给函数参数大小self.biases = sizes:从标准正态分布生成一个元素数组(表示为np.random.randn(y, 1))以下行计算是什么?
self.weights = [np.random.randn(y, x)
for x, y in zip(sizes[:-1], sizes[1:])]
Run Code Online (Sandbox Code Playgroud)
我是Python的新手.这个代码可以在Python shell中使用,这样我可以通过单独调用每一行来获得更好的理解吗?
该zip()函数将每个可迭代的元素配对; zip('foo', 'bar')例如,会产生[('f', 'b'), ('o', 'a'), ('o', 'r')]; 两个字符串中的每个元素已经配对成三个新元组.
zip(sizes[:-1], sizes[1:])然后,sizes使用下一个元素在序列中创建元素对,因为除了last(sizes[:-1])之外的所有元素都将除了first(sizes[1:])之外的所有元素配对.这将第一和第二元素组合在一起,然后将第二和第三元素组合在一起,一直到最后两个元素.
对于每个这样的对,使用列表理解产生随机样本.因此,对于每x, y对,生成新的2维numpy矩阵,其中随机值划分为y行和x列.
请注意,该biases值仅使用sizes[1:]除第一个之外的所有值,y为每个此类大小生成1个矩阵.
这些概念的快速演示:
>>> zip('foo', 'bar')
[('f', 'b'), ('o', 'a'), ('o', 'r')]
>>> zip('foo', 'bar', 'baz') # you can add more sequences
[('f', 'b', 'b'), ('o', 'a', 'a'), ('o', 'r', 'z')]
>>> sizes = [5, 12, 18, 23, 42]
>>> zip(sizes[:-1], sizes[1:]) # a sliding window of pairs
[(5, 12), (12, 18), (18, 23), (23, 42)]
# 0, 1 .. 1, 2 .. 2, 3 .. 3, 4 element indices into sizes
>>>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3109 次 |
| 最近记录: |