2017-09-14 124 views
1

我有一個自制的數據集,數百萬行。我正在嘗試製作截斷的副本。所以我剪下我用來製作原始數據集並創建一個新數據集的張量。但是,當我保存只有20K行的新數據集時,它與原始數據集的磁盤大小相同。否則一切似乎猶太教,包括,當我檢查,新張量的大小。我究竟做錯了什麼?Pytorch張量/數據集的調整大小副本

#original dataset - 2+million rows 
dataset = D.TensorDataset(training_data, labels) 
torch.save(dataset, filename) 

#20k dataset for experiments 
d = torch.Tensor(training_data[0:20000]) 
l = torch.Tensor(labels[0:20000]) 
ds_small = D.TensorDataset(d,l) 
#this is the same size as the one above on disk... approx 1.45GB 
torch.save(ds_small, filename_small) 

感謝

+0

如果我的答案適合您,請考慮將其標記爲正確答案,以便問題不再顯示爲未答覆。 – McLawrence

回答

0

在你的代碼dtraining_data共享相同的內存,即使你創造d過程中使用切片。我不知道爲什麼是這樣的話,但是無論如何回答,給你一個解決方案:

d = x[0:10000].clone() 
l = y[0:10000].clone() 

clone會給你獨立於舊張量和文件大小會小很多記憶張量。在使用torch.Tensor()

注意,因爲training_data創建dl時和labels已經張量是沒有必要的。

+0

謝謝。那樣做了。 torcn.Tensor()是我試圖強制進行深層複製的原因。我懷疑這是一個直截了當的答案,但我的嘗試是空的。 – Toddwf