首页 > 解决方案 > 构建 Relu 层:TypeError:“builtin_function_or_method”对象不支持项目分配

问题描述

我正在尝试构建 Relu 层:

import numpy as np

class Relu:
    def __init__(self):
        self.mask = None

    def forward (self,x):
        self.mask = (x<=0)
        out = x.copy 
        out[self.mask] = 0
        return out 

    def backward(self, dout):
        dout[self.mask]=0
        dx = dout 
        return dx

activation = Relu()
out = activation.forward(np.random.rand(3,2))
print(out)

错误信息是:

      5         self.mask = (x<=0)
      6         out = x.copy
----> 7         out[self.mask] = 0
      8         return out
      9     def backward(self, dout):

TypeError: 'builtin_function_or_method' object does not support item assignment

我在教科书中使用代码。但是,我无法执行 Relu 代码。这是环境设置问题吗?

标签: pythonnumpymachine-learning

解决方案


您忘记在copy. 现在,您只需将copy功能分配给out. 它只是被引用,而不是被调用。这是更正后的代码。

import numpy as np

class Relu:
    def __init__(self):
        self.mask = None

    def forward (self,x):
        self.mask = (x<=0)
        out = x.copy()
        out[self.mask] = 0
        return out 

    def backward(self, dout):
        dout[self.mask]=0
        dx = dout 
        return dx

activation = Relu()
out = activation.forward(np.random.rand(3,2))
print(out)

推荐阅读