1 回答

TA貢獻1804條經(jīng)驗 獲得超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]))
并導(dǎo)入class.py
from testinit import NeuralNetwork #only consists of this line
問題似乎是當您在原始文件中定義網(wǎng)絡(luò)并執(zhí)行打印命令,然后將該文件導(dǎo)入新文件“importingclass.py”時,即使沒有代碼,importingclass.py 也會執(zhí)行打印命令在原始的“testinit.py”文件中定義。
您可以使用我提供的文件代碼自行嘗試,如果您使用給定的“testinit.py”,您將看到執(zhí)行“importingclass.py”文件將打印一次而沒有代碼。
在任一文件中只有一個打印命令實例將只產(chǎn)生一個打印輸出,而在兩個文件中都有一個打印命令實例(總共兩個)將產(chǎn)生兩個輸出。這是我得出的結(jié)論。
這是我對 init 文件的輸出(條件是導(dǎo)入類的文件中沒有打印命令)
因此,解決方案是不實例化一個對象并將其打印在您打算導(dǎo)入的 init 文件中,因為該對象將在導(dǎo)入中創(chuàng)建并打印一次,并使用導(dǎo)入從文件中打印一次(我相信 Python 貫穿于導(dǎo)入文件的行一次)。
添加回答
舉報