国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - Pytorch技巧:DataLoader的collate_fn參數使用詳解

Pytorch技巧:DataLoader的collate_fn參數使用詳解

2020-05-05 10:55jmjackyrj Python

今天小編就為大家分享一篇Pytorch技巧:DataLoader的collate_fn參數使用詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

DataLoader完整的參數表如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
class torch.utils.data.DataLoader(
 dataset,
 batch_size=1,
 shuffle=False,
 sampler=None,
 batch_sampler=None,
 num_workers=0,
 collate_fn=<function default_collate>,
 pin_memory=False,
 drop_last=False,
 timeout=0,
 worker_init_fn=None)

DataLoader在數據集上提供單進程或多進程的迭代器

幾個關鍵的參數意思:

- shuffle:設置為True的時候,每個世代都會打亂數據集

- collate_fn:如何取樣本的,我們可以定義自己的函數來準確地實現想要的功能

- drop_last:告訴如何處理數據集長度除于batch_size余下的數據。True就拋棄,否則保留

一個測試的例子

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import torch
import torch.utils.data as Data
import numpy as np
 
test = np.array([0,1,2,3,4,5,6,7,8,9,10,11])
 
inputing = torch.tensor(np.array([test[i:i + 3] for i in range(10)]))
target = torch.tensor(np.array([test[i:i + 1] for i in range(10)]))
 
torch_dataset = Data.TensorDataset(inputing,target)
batch = 3
 
loader = Data.DataLoader(
 dataset=torch_dataset,
 batch_size=batch, # 批大小
 # 若dataset中的樣本數不能被batch_size整除的話,最后剩余多少就使用多少
 collate_fn=lambda x:(
  torch.cat(
   [x[i][j].unsqueeze(0) for i in range(len(x))], 0
   ).unsqueeze(0) for j in range(len(x[0]))
  )
 )
 
for (i,j) in loader:
 print(i)
 print(j)

輸出結果:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
tensor([[[ 0, 1, 2],
   [ 1, 2, 3],
   [ 2, 3, 4]]], dtype=torch.int32)
tensor([[[ 0],
   [ 1],
   [ 2]]], dtype=torch.int32)
tensor([[[ 3, 4, 5],
   [ 4, 5, 6],
   [ 5, 6, 7]]], dtype=torch.int32)
tensor([[[ 3],
   [ 4],
   [ 5]]], dtype=torch.int32)
tensor([[[ 6, 7, 8],
   [ 7, 8, 9],
   [ 8, 9, 10]]], dtype=torch.int32)
tensor([[[ 6],
   [ 7],
   [ 8]]], dtype=torch.int32)
tensor([[[ 9, 10, 11]]], dtype=torch.int32)
tensor([[[ 9]]], dtype=torch.int32)

如果不要collate_fn的值,輸出變成

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
tensor([[ 0, 1, 2],
  [ 1, 2, 3],
  [ 2, 3, 4]], dtype=torch.int32)
tensor([[ 0],
  [ 1],
  [ 2]], dtype=torch.int32)
tensor([[ 3, 4, 5],
  [ 4, 5, 6],
  [ 5, 6, 7]], dtype=torch.int32)
tensor([[ 3],
  [ 4],
  [ 5]], dtype=torch.int32)
tensor([[ 6, 7, 8],
  [ 7, 8, 9],
  [ 8, 9, 10]], dtype=torch.int32)
tensor([[ 6],
  [ 7],
  [ 8]], dtype=torch.int32)
tensor([[ 9, 10, 11]], dtype=torch.int32)
tensor([[ 9]], dtype=torch.int32)

所以collate_fn就是使結果多一維。

看看collate_fn的值是什么意思。我們把它改為如下

?
1
collate_fn=lambda x:x

并輸出

?
1
2
for i in loader:
 print(i)

得到結果

?
1
2
3
4
[(tensor([ 0, 1, 2], dtype=torch.int32), tensor([ 0], dtype=torch.int32)), (tensor([ 1, 2, 3], dtype=torch.int32), tensor([ 1], dtype=torch.int32)), (tensor([ 2, 3, 4], dtype=torch.int32), tensor([ 2], dtype=torch.int32))]
[(tensor([ 3, 4, 5], dtype=torch.int32), tensor([ 3], dtype=torch.int32)), (tensor([ 4, 5, 6], dtype=torch.int32), tensor([ 4], dtype=torch.int32)), (tensor([ 5, 6, 7], dtype=torch.int32), tensor([ 5], dtype=torch.int32))]
[(tensor([ 6, 7, 8], dtype=torch.int32), tensor([ 6], dtype=torch.int32)), (tensor([ 7, 8, 9], dtype=torch.int32), tensor([ 7], dtype=torch.int32)), (tensor([ 8, 9, 10], dtype=torch.int32), tensor([ 8], dtype=torch.int32))]
[(tensor([ 9, 10, 11], dtype=torch.int32), tensor([ 9], dtype=torch.int32))]

每個i都是一個列表,每個列表包含batch_size個元組,每個元組包含TensorDataset的單獨數據。所以要將重新組合成每個batch包含1*3*3的input和1*3*1的target,就要重新解包并打包。 看看我們的collate_fn:

?
1
2
3
4
5
collate_fn=lambda x:(
 torch.cat(
  [x[i][j].unsqueeze(0) for i in range(len(x))], 0
  ).unsqueeze(0) for j in range(len(x[0]))
 )

j取的是兩個變量:input和target。i取的是batch_size。然后通過unsqueeze(0)方法在前面加一維。torch.cat(,0)將其打包起來。然后再通過unsqueeze(0)方法在前面加一維。 完成。

以上這篇Pytorch技巧:DataLoader的collate_fn參數使用詳解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持服務器之家。

原文鏈接:https://blog.csdn.net/weixin_42028364/article/details/81675021

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 欧美 日韩 中文 | 曰韩av| 6080亚洲精品一区二区 | 吴梦梦到粉丝家实战华中在线观看 | 国产视频三区 | jdav视频在线观看免费 | 亚洲精品欧美精品 | 欧美中文字幕一区二区三区 | 日韩成人影院 | 日韩成人在线播放 | 国产精品三级久久久久久电影 | 精品一区久久 | 亚洲精品福利 | 欧美日韩在线视频观看 | 国产最新视频 | 精品一区电影 | 国产97在线播放 | 国产成人99久久亚洲综合精品 | 国产精品亚洲成在人线 | 国产精品久久久久久久久久久久久久久久 | 最近免费中文字幕大全免费版视频 | 中文字幕乱码视频32 | 日韩精品免费一区二区夜夜嗨 | 久久精品日产第一区二区三区 | 成人一区二区三区久久精品嫩草 | 成视频年人免费看黄网站 | 性福视频在线观看 | 黄在线| 91精品久久久久久久久 | 91av入口 | 国产一区二区亚洲 | 一级黄色毛片 | 欧美日韩电影一区二区三区 | 在线视频一区二区 | 一区在线观看 | 色婷婷精品国产一区二区三区 | 精久久久 | 91在线播放视频 | 天天摸天天摸 | www.99re| 91亚色|