亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Python,打印執行了兩次

Python,打印執行了兩次

婷婷同學_ 2023-03-16 09:40:37
我已經開始使用 Tariq Rashid 的書來接觸 Python 和神經網絡。按照所有步驟仔細閱讀并嘗試。有一次,我應該測試一個方法,看它是否正確執行。所以我做了什么,我使用 print 轉換了方法(該方法有一個返回值)?,F在我的問題是,它工作正常,但雖然輸出應該是單個數組,但它們是 2 個具有不同值的數組。當我嘗試調試文件時,它也通過打印命令進行了 2 次,其中只有 1 次。我唯一的區別是,我將init用作主要類(來自 java),并且我將神經網絡創建為其中的一個對象。還要提一下,如果我在神經網絡文件中執行相同的程序,它工作正常。from src2.neuralNetwork import NeuralNetworknetwork = NeuralNetwork(3, 3, 3, 0.3)print(network.query([1.0, 0.5, -1.5]))這是 __init__.py 文件。import numpyimport scipy.specialclass NeuralNetwork:    def __init__(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)        self.activation_function = lambda x: scipy.special.expit(x)        pass    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那是神經網絡的文件。感謝您的每一個回答。編輯:根據要求,輸出。它們不是隨機值的一致原因。這是從 __ init __ 文件打印時的輸出這是從神經網絡文件打印時的輸出
查看完整描述

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 文件的輸出(條件是導入類的文件中沒有打印命令)

http://img1.sycdn.imooc.com//641273cc0001005b17340114.jpg

因此,解決方案是不實例化一個對象并將其打印在您打算導入的 init 文件中,因為該對象將在導入中創建并打印一次,并使用導入從文件中打印一次(我相信 Python 貫穿于導入文件的行一次)。



查看完整回答
反對 回復 2023-03-16
  • 1 回答
  • 0 關注
  • 163 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號