创建仅输入图像的数据集

时间:2019-06-03 05:38:43

标签: unsupervised-learning chainer imagedata

我需要一个仅包含图像的数据集对象,以便在Chainer框架中进行无监督学习。我正在尝试为此目的使用DatasetMixin。

图像是包含图像的列表。

call() missing 1 required positional argument: 'x'

SimpleDataset类似乎无法读取图像,因为在运行trainer.run()时出现错误:

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

在将其放入DatasetMixin类之前,是否需要处理图像列表?

使用DatasetMixin以这种方式仅提供图像是否有问题?

我该怎么做才能将图像(不带任何标签或其他东西)仅馈入模型?

Tag

1 个答案:

答案 0 :(得分:0)

如果您使用的是Classifier,则数据集需要以x0, x1, ... xk, y的格式返回,其中x0, x1, ... xk将被馈送到predictor(在这种情况下为{{ 1}}类),其输出值AutoEncoder和实际的y_pred用于y指定的损耗计算。

对于您而言,答案lossfun与输入相同。我认为您可以编写以下代码来返回yx,它们实际上是相同的:

y