【发布时间】:2021-07-01 10:04:04
【问题描述】:
谁能帮我弄清楚如何构建一个 Pytorch 可以理解的数据集?我有一个化学成分数据集,其中每个向量都包含所有零,但对应原子位置的化合物中每个元素的分数丰度:
我的目标是尝试使用这些向量进行非线性降维。 所以,通过排除第一列,我基本上是在考虑 103 维向量。 唯一的问题是我不知道如何实际准备这种数据来训练自动编码器:从字面上看,我发现的所有教程都解释了如何将它们与图像一起使用(MNIST 手写数字数据集)。下面附上我准备的一个基本模型:
class Autoencoder(nn.Module):
def __init__(self, input_size, hidden_size):
super().__init__()
self.encoder = nn.Sequential(
nn.Linear(input_size, hidden_size),
nn.ReLU(),
nn.Linear(hidden_size, 3)) #reduce the size
self.decoder = nn.Sequential(
nn.Linear(3, hidden_size),
nn.ReLU(),
nn.Linear(hidden_size, input_size),
nn.ReLU()) #reduce the size
def forward(self, x):
encoded = self.encoder(x)
decoded = self.decoder(encoded)
return decoded
我知道我应该准备一个所谓的DataLoader 来继续实例化一个训练循环,但实际上我不知道为数值做这件事。希望你有一些建议。
非常感谢,
詹姆斯
更新:
与此同时,我设法创建了一个像这样的 Pytorch 数据集类,它似乎可以工作:
class ChemicalFractions(Dataset):
def __init__(self):
#here I load the data
data = pd.read_csv('path-to-my-data',)
self.x = torch.from_numpy(data.values)
self.n_samples= data.shape[0]
def __getitem__(self,index):
return self.x[index]
def __len__(self):
return self.n_samples
现在我仍然需要实例化 DataLoader..
【问题讨论】:
标签: pytorch autoencoder