第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

當(dāng)我更改不應(yīng)觸發(fā)任何更新的按鈕設(shè)置時(shí),為什么我的繪圖會(huì)被面板更新(兩次)?(面板霍洛維茲)

當(dāng)我更改不應(yīng)觸發(fā)任何更新的按鈕設(shè)置時(shí),為什么我的繪圖會(huì)被面板更新(兩次)?(面板霍洛維茲)

MMTTMM 2022-06-07 17:57:11
我開設(shè)了一個(gè)課程來(lái)探索和訓(xùn)練模型。當(dāng)我在下面的代碼示例中更改下拉菜單“choose_model_type”的值時(shí),我希望儀表板中沒(méi)有任何變化,因?yàn)锧param.depends('choose_model_type', watch=True)我的類中沒(méi)有。但是,當(dāng)我更改下拉菜單“choose_model_type”的值時(shí),我的儀表板會(huì)更新。在這種情況下,如果我查看日志,函數(shù) plot_y() 會(huì)被觸發(fā)兩次:2019-09-26 11:24:42,802 開始 plot_y2019-09-26 11:24:42,825 開始 plot_y這對(duì)我來(lái)說(shuō)是意想不到的行為。我不希望在更改“choose_model_type”時(shí)觸發(fā) plot_y()。我如何確保僅在“y”更改(并且我的繪圖在儀表板中更新)而不是其他參數(shù)(例如下拉菜單)更改時(shí)才觸發(fā) plot_y?我想控制什么時(shí)候觸發(fā),但對(duì)我來(lái)說(shuō)似乎有一些魔法正在發(fā)生。其他相關(guān)問(wèn)題是:為什么 plot_y() 被觸發(fā)兩次?如果我更改 'pred_target' 它也會(huì)觸發(fā) plot_y() 兩次。當(dāng)我更改“choose_model_type”的值時(shí)也會(huì)發(fā)生同樣的情況:plot_y() 被觸發(fā)兩次。# library imports    import loggingimport numpy as npimport pandas as pdimport hvplotimport hvplot.pandasimport holoviews as hvfrom holoviews.operation.datashader import datashade, dynspreadhv.extension('bokeh', logo=False)import panel as pnimport param# create some sample datadf = pd.DataFrame(np.random.choice(100, size=[50, 2]), columns=['TARGET1', 'TARGET2'])# class to train my models with some settingsclass ModelTrainer(param.Parameterized):    logging.info('initializing class')    pred_target = param.Selector(        default='TARGET1',        objects=['TARGET1', 'TARGET2'],        label='Choose prediction target'    )    choose_model_type = param.Selector(        default='LINEAR',         objects=['LINEAR', 'LGBM', 'RANDOM_FOREST'],        label='Choose type of model',    )    y = df[pred_target.default]    # i expect this function only to be triggered when pred_target changes    @param.depends('pred_target', watch=True)    def _reset_variables(self):        logging.info('starting reset variables')        self.y = df[self.pred_target]    # i expect plot_y() only to be triggered when y changes       @param.depends('y', watch=True)    def plot_y(self):        logging.info('starting plot_y')        self.y_plot = dynspread(datashade(self.y.hvplot.scatter()))        return self.y_plotmodel_trainer = ModelTrainer()
查看完整描述

1 回答

?
德瑪西亞99

TA貢獻(xiàn)1770條經(jīng)驗(yàn) 獲得超3個(gè)贊

這里的問(wèn)題是驗(yàn)證之一,特別是問(wèn)題在這里:@param.depends('y', watch=True)y不是您示例中的參數(shù),因此 param.depends 無(wú)法解決它并最終退回到取決于所有參數(shù)。我已經(jīng)提交了一個(gè)問(wèn)題來(lái)解決這個(gè)問(wèn)題。如果您將示例更改為:

y = param.Series(default=df[pred_target.default])

它會(huì)起作用,但是您仍然會(huì)遇到回調(diào)被調(diào)用兩次的問(wèn)題。這是因?yàn)槟阋呀?jīng)watch=True在依賴聲明中設(shè)置了。設(shè)置watch=True只對(duì)有副作用的方法有意義,如果你的方法是返回值的,那么設(shè)置它幾乎沒(méi)有意義。為了擴(kuò)展這一點(diǎn),當(dāng)您將方法傳遞給面板時(shí),例如pn.Row(model_trainer.plot_y),它會(huì)自動(dòng)監(jiān)視參數(shù)并在參數(shù)更改時(shí)調(diào)用該方法來(lái)更新繪圖。


查看完整回答
反對(duì) 回復(fù) 2022-06-07
  • 1 回答
  • 0 關(guān)注
  • 103 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)