1 回答
TA贡献1804条经验 获得超3个赞
我用了两个文件来测试这个。这是每个的代码。测试初始化文件
import numpy
import scipy.special
class NeuralNetwork:
def __init__(self, inputnodes, hiddennodes, outputnodes, learningrate):
self.reset(inputnodes, hiddennodes, outputnodes, learningrate)
self.inodes = inputnodes
self.hnodes = hiddennodes
self.onodes = outputnodes
self.lr = learningrate
self.wih = (numpy.random.rand(self.hnodes, self.inodes) - 0.5)
self.who = (numpy.random.rand(self.onodes, self.hnodes) - 0.5)
self.activation_function = lambda x: scipy.special.expit(x)
pass
def reset(self, inputnodes, hiddennodes, outputnodes, learningrate):
self.inodes = inputnodes
self.hnodes = hiddennodes
self.onodes = outputnodes
self.lr = learningrate
self.wih = (numpy.random.rand(self.hnodes, self.inodes) - 0.5)
self.who = (numpy.random.rand(self.onodes, self.hnodes) - 0.5)
def train(self):
pass
def query(self, inputs_list):
inputs = numpy.array(inputs_list, ndmin=2).T
hidden_inputs = numpy.dot(self.wih, inputs)
hidden_outputs = self.activation_function(hidden_inputs)
final_inputs = numpy.dot(self.who, hidden_outputs)
final_outputs = self.activation_function(final_inputs)
return final_outputs
network = NeuralNetwork(3, 3, 3, 0.3)
print(network.query([1.0, 0.5, -1.6]))
并导入class.py
from testinit import NeuralNetwork #only consists of this line
问题似乎是当您在原始文件中定义网络并执行打印命令,然后将该文件导入新文件“importingclass.py”时,即使没有代码,importingclass.py 也会执行打印命令在原始的“testinit.py”文件中定义。
您可以使用我提供的文件代码自行尝试,如果您使用给定的“testinit.py”,您将看到执行“importingclass.py”文件将打印一次而没有代码。
在任一文件中只有一个打印命令实例将只产生一个打印输出,而在两个文件中都有一个打印命令实例(总共两个)将产生两个输出。这是我得出的结论。
这是我对 init 文件的输出(条件是导入类的文件中没有打印命令)
因此,解决方案是不实例化一个对象并将其打印在您打算导入的 init 文件中,因为该对象将在导入中创建并打印一次,并使用导入从文件中打印一次(我相信 Python 贯穿于导入文件的行一次)。
添加回答
举报