[英]Pytorch copy a neuron in a layer
我正在使用 pytorch 0.3.0。 我試圖有選擇地復制一個神經元和它在同一層內的權重,然后用另一組權重替換原始神經元。 這是我的嘗試:
reshaped_data2 = data2.unsqueeze(0)
new_layer_data = torch.cat([new_layer.data, reshaped_data2], dim=0)
new_layer_data[i] = data1
new_layer.data.copy_(new_layer_data)
首先,我解壓data2
使其成為1*X
張量而不是0*X
。 然后我將我的層的張量與沿維度 0 重新整形的data2
連接起來。然后我將位於索引i
的原始data2
替換為data1
。 最后,我將所有這些復制到我的圖層中。
我得到的錯誤是:
RuntimeError: inconsistent tensor size, expected tensor [10 x 128] and src [11 x 128] to have the same number of elements, but got 1280 and 1408 elements respectively at /Users/soumith/code/builder/wheel/pytorch-src/torch/lib/TH/generic/THTensorCopy.c:86
如果我做一個簡單的任務而不是復制,我會得到
RuntimeError: The expanded size of the tensor (11) must match the existing size (10) at non-singleton dimension 1. at /Users/soumith/code/builder/wheel/pytorch-src/torch/lib/TH/generic/THTensor.c:309
我理解錯誤,但是解決此問題的正確方法是什么?
你試圖更換10x128
與張11x128
張量,該模型不允許。 new_layer
是否用大小(11, 128)
初始化? 如果沒有,請嘗試使用所需大小(11, 128)
創建新圖層,然后復制/分配new_layer_data
。
這里的解決方案是創建一個具有正確大小的新模型,並將權重作為默認值傳遞。 沒有找到動態擴展解決方案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.