我需要一个仅包含图像的数据集对象,以便在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
答案 0 :(得分:0)
如果您使用的是Classifier
,则数据集需要以x0, x1, ... xk, y
的格式返回,其中x0, x1, ... xk
将被馈送到predictor
(在这种情况下为{{ 1}}类),其输出值AutoEncoder
和实际的y_pred
用于y
指定的损耗计算。
对于您而言,答案lossfun
与输入相同。我认为您可以编写以下代码来返回y
和x
,它们实际上是相同的:
y