去掉注意力後,發現測試集準確率一直為0,這時要關注測試集上的損失函式是否下降,如果沒有下降,可能是學習率較大導致,需要調整模型學習率。
例子:(2,2,3),(2,2,4)拼接為(2,2,7)
embeds1維度為2*2
*3,embeds2維度為2*2
*7defembedding_stack
(self, embeds1, embeds2)
:# 儲存拼接後的tensor
embeds_list =
for i in
range
(len
(embeds1)):
# 在列維度進行tensor拼接
t = torch.cat(
(embeds1[i]
, embeds2[i]),
1)# 首先將cuda轉為cpu,然後去掉梯度,轉為numpy後可以轉為list
t = t.cpu(
).detach(
).numpy(
).tolist(
)# list轉numpy,預設資料格式為float64
embeds_np = np.array(embeds_list)
# 將numpy資料格式轉為指定格式float32,通過astype,不可直接用dtype=float32,會導致維度增加
result = torch.from_numpy(embeds_np.astype(
'float32'))
if settings.use_cuda:
result = result.cuda(
)return result
bert輸出資料型別格式為float32;
當拼接完資料後,資料型別為float64,導致lstm錯誤runtimeerror: cudnn error: cudnn_status_bad_param,可能的原因是精度太高導致lstm表示出錯。
一般不超過3層,當層數增加,測試集f1值為0時,可能輸入向量導致的問題(bert起止標誌表示錯誤,導致向量表示錯誤)
Torch7模型訓練
torch7搭建卷積神經網路詳細教程 已經詳細的介紹啦module模組,這裡再次基礎上再給出一些上container transfer functions layers和 layers模組的理解。並在後面給出一些簡單的模型訓練方法。下述程式在itorch qtconsole下執行。主要有四個函式 詳...
Threejs模型 調整模型的視角
x y z軸的位置 建立盒子 modelbounds new three.box3 建立乙個盒子 賦值為每乙個模型的構件的盒子 data if modelbounds.isempty else 思路是 假設相機位於模型的正上方,那麼相機相對於模型的兩邊的夾角相同,設定乙個夾角為60度,那麼可以知道相...
torch如何檢視模型的中間輸出結果
博主之前一直是用tensorflow,但是最近有在接觸一點torch,發現torch中有乙個地方很不方便就是他定義在網路中間的層的結果我們沒法看,因為它沒有辦法像tensorflow這種可以直接通過名字索引。比如 self.conv1 1 self.conv layer bgr,3,64,conv1...