【问题标题】:TypeError: init() takes 0 positional arguments but 5 were givenTypeError: init() 接受 0 个位置参数,但给出了 5 个
【发布时间】:2018-09-20 16:34:06
【问题描述】:

我正在使用 python 编码,当我实时编码时出现此消息:

Traceback (most recent call last)
<ipython-input-3-d56dec7d72db> in <module>()
      8 
      9 # create instance of neural network
---> 10 n= neuralNetwork(input_nodes,hidden_nodes,output_nodes,learning_rate)
     11 

TypeError: init() 接受 0 个位置参数,但给出了 5 个

它究竟意味着什么,我能做些什么?

这是我的代码:

#neural network class definition
class neuralNetwork:

#initialise the neural network
def __init__():
    pass

#train the neural network
def train():
    pass
#query the neural network
def query():
    pass

#initialise the neural network
def __init__(self,inputnodes, hiddennodes,outputnodes,learningrate):

# set number of nodes in each input, hidden, output layer
self.inodes= inputnodes
self.hnodes = hiddennodes
self.onodes = outputnodes 

#learning rate
self.lr = learningrate
pass

# number of input, hidden and output nodes
input_nodes = 3
hidden_nodes = 3
output_nodes = 3

# learning rate is 0.3
learning_rate = 0.3

# create instance of neural network 
n= neuralNetwork(input_nodes,hidden_nodes,output_nodes,learning_rate)

【问题讨论】:

  • 请正确缩进 Python 代码。

标签: python neural-network


【解决方案1】:

您的 neuralNetwork 类中有 2 个 __init__ 方法:
1 个 __init__ 没有任何参数,1 个 __init__ 有 4 个参数。

您是否尝试创建多个/重载的构造函数?
你不能在 Python 中这样做(不像在 Java 或 C++ 中)。

您收到的错误意味着正在使用不带任何参数的 __init__,因此解释器不希望有任何参数,但您传递了 4 ((input_nodes, hidden_nodes, output_nodes, learning_rate)),然后为 self 传递了 +1。

根据您要如何实例化类,您必须删除不接受任何参数的类。

class neuralNetwork:

    # REMOVE THIS EMPTY CONSTRUCTOR
    # initialise the neural network
    # def __init__():
    #    pass

    # initialise the neural network
    def __init__(self,inputnodes, hiddennodes,outputnodes,learningrate):
        # initialization code

    # ... rest of class ...

n = neuralNetwork(input_nodes, hidden_nodes, output_nodes, learning_rate)

如果你想拥有多个构造函数,你可以定义唯一的__init__的:

class neuralNetwork:

    # initialise a default neural network
    def __init__():
        # default initialization code    

    # initialise a custom neural network
    def init_custom(self,inputnodes, hiddennodes,outputnodes,learningrate):
        # custom initialization code

    # ... rest of class ...

n = neuralNetwork()
n.init_custom(input_nodes, hidden_nodes, output_nodes, learning_rate)

或者尝试其他帖子中已经描述的其他方法:

【讨论】:

    猜你喜欢
    • 2020-06-13
    • 2013-09-23
    • 2014-11-26
    • 2017-10-05
    • 2016-01-30
    • 2019-06-26
    • 2014-11-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多