<p>PyTorch<code>DataLoader</code>需要一个<code>DataSet</code>,因为您可以签入<a href="https://pytorch.org/docs/stable/data.html" rel="nofollow noreferrer">docs</a>。正确的方法是:</p>
<pre><code>torch.utils.data.TensorDataset(*tensors)
</code></pre>
<p>这是一个用于包装张量的数据集,其中每个样本将通过沿着第一个维度索引张量来检索。
参数<code>*tensors</code>表示具有与第一维相同大小的张量。</p>
<p>另一个是抽象类。</p>
<p>下面是如何将numpy数组转换为张量:</p>
<pre><code>import torch
import numpy as np
n = np.arange(10)
print(n) #[0 1 2 3 4 5 6 7 8 9]
t1 = torch.Tensor(n) # as torch.float32
print(t1) #tensor([0., 1., 2., 3., 4., 5., 6., 7., 8., 9.])
t2 = torch.from_numpy(n) # as torch.int32
print(t2) #tensor([0, 1, 2, 3, 4, 5, 6, 7, 8, 9], dtype=torch.int32)
</code></pre>
<p>接受的答案使用了<code>torch.Tensor</code>构造。
如果您的图像像素为0-255,则可以使用:</p>
<pre><code>timg = torch.from_numpy(img).float()
</code></pre>
<p>或者torchvision<a href="https://pytorch.org/docs/stable/torchvision/transforms.html" rel="nofollow noreferrer">^{<cd6>}</a>方法,将PIL图像或numpy.ndarray转换为张量。</p>
<hr/>
<p>但这里有一个小技巧,你可以把你的核阵列直接。</p>
<pre><code>x1 = np.array([1,2,3])
d1 = DataLoader( x1, batch_size=3)
</code></pre>
<p>这也可以,但是如果您打印<code>d1.dataset</code>类型:</p>
<pre><code>print(type(d1.dataset)) # <class 'numpy.ndarray'>
</code></pre>
<p>虽然我们实际上需要张量来处理CUDA,所以最好使用张量来填充<code>DataLoader</code>。</p>