報(bào)錯(cuò)信息
C++ Callstacks:
holder_ should not be null
Tensor not initialized yet when Tensor::type() is called. at [D:\1.4.1\paddle\paddle/fluid/framework/tensor.h:146]
問題原因
有已經(jīng)定義好的變量還沒有初始化參數(shù)就被調(diào)用了
例如上方的代碼塊贺归,這些默認(rèn)是保存在
fluid.default_main_program()
程序中规婆。但不管有多少個(gè)子程序溃列,都必須在fluid.default_statrup_program()
中初始化參數(shù)后傲茄,讓他們知道是自己是干嘛的時(shí)候捐康,他們才可以正確運(yùn)行畦幢。初始化方法如下:在這些所有有關(guān)定義數(shù)據(jù)的代碼塊后拙吉,使用執(zhí)行器exe.run(啟動(dòng)程序 此處為 startup )
初始化定義的變量就可以了潮孽。
解決方法
修改exe.run(startup)
到訓(xùn)練主循環(huán)位置上方最近處,避免有變量沒有初始化參數(shù)就開始計(jì)算筷黔。
查看啟動(dòng)程序代碼塊位置是否在最接近訓(xùn)練主循環(huán)代碼塊位置上往史,而且兩個(gè)代碼塊中間不能有其它有關(guān)訓(xùn)練的代碼
這些不夠直觀,但不妨參考一下這篇文章佛舱,看一下代碼結(jié)構(gòu)就可以了http://www.reibang.com/p/df98fcc832ed