我需要一个仅包含用于 Chainer 框架中无监督学习的图像的数据集对象。我正在尝试为此目的使用 DatasetMixin。
图像是包含图像的列表。
class SimpleDataset(dataset.DatasetMixin):
def __init__(self, Images):
self.Images = Images
def __len__(self):
return len(self.Images)
def get_example(self, i):
return self.Images[i]
SimpleDataset 类似乎无法读取图像,因为在运行 trainer.run() 时出现错误:
call() missing 1 required positional argument: 'x'
在将图像列表放入 DatasetMixin 类之前,我是否需要进一步处理它?
使用 DatasetMixin 以这种方式只提供图像有什么问题吗?
我该怎么做才能将图像(没有任何标签或其他东西)提供给我的模型?
class AutoEncoder(chainer.Chain):
def __init__(self, n_in, n_out):
super(AutoEncoder, self).__init__(
l1 = L.Linear(n_in, n_out),
l2 = L.Linear(n_out, n_in)
)
self.add_param('decoder_bias', n_in)
self.decoder_bias.data[...] = 0
def __call__(self, x):
h1 = F.dropout(self.l1(x))
h2 = F.linear(h1, F.transpose(self.l1.W), self.decoder_bias)
return F.sigmoid(h2)
def encode(self, x):
return F.dropout(self.l1(x))
def decode(self, x):
return self.l2(x)
model = L.Classifier(AutoEncoder(40000, 1000), lossfun=F.mean_squared_error)
model.compute_accuracy = False