我正在通过构建自己的框架来学习神经网络,但在尝试编写步进激活函数时遇到了问题。到目前为止,这就是让我最接近目标的原因:
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]]
如果您提供有关如何解决它的任何想法,我将不胜感激。
答案 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)