Python – 2D NumPy 数组上的嵌套 FOR 循环

时间:2021-06-19 10:09:49

标签: python arrays numpy loops neural-network

我正在通过构建自己的框架来学习神经网络,但在尝试编写步进激活函数时遇到了问题。到目前为止,这就是让我最接近目标的原因:

import numpy as np

def step_function(layer_output):
    for row in layer_output:
        return np.array([0 if element <= 0 else 1 for element in row])

我正在尝试遍历每一行中的每个元素,并检查该元素的 IF 语句是否正确。以下是一些示例数字(作为 NumPy 数组,因为这是我的图层输出格式)发生的情况:

numbers = np.array([[1, -2, -3],
                    [0, 4, 5]])

activation = step_function(numbers)
print(activation)

>>>
[1 0 0]

循环卡在第一行。这就是我想要的输出:

>>>
[[1 0 0]
 [0 1 1]]

如果您提供有关如何解决它的任何想法,我将不胜感激。

1 个答案:

答案 0 :(得分:0)

在python中,'return'关键字接受传递给它的参数,停止当前运行的函数并返回调用函数的参数。这就是您的功能“过早停止”的原因。 相反,您可以做的是:

import numpy as np

def step_function(layer_output):
    output = np.zeros_like(layer_output)
    for i, row in enumerate(layer_output):
        output[i] = np.array([0 if element <= 0 else 1 for element in row])
    return output

但是直接对整个数组做一个阈值操作会更简单、更快捷

import numpy as np

def step_function(layer_output):
    return (layer_output>0).astype(int)