我通过Pylearn2训练并保存了两层堆叠的CAE模型。我想加载这些模型并转换一个新颖的数据集。我该怎么做?
这是我的型号:
l1 = serial.load('CAE_l1.pkl')
l2 = serial.load('CAE_l2.pkl')
print l1
<pylearn2.models.autoencoder.ContractiveAutoencoder object at 0x7f3bb6d482d0>
我也试过这样的东西,但不起作用。
data = T.matrix('data')
transform = theano.function([data], l1(data))
这是我最近做的,但不确定它的正确性:
data = T.matrix('data')
transform = theano.function([data], l1.encode(data))
X_1 = transform(X.astype(float32))
检查pylearn2.scripts.autoencoder
目录中的配置文件,该文件显示如何使用堆叠的、预训练的自动编码器。在数据集进入模型的下一阶段的过程中,您将预训练的模型作为transformer对象加载到数据集上。
如果你不想使用yaml文件,你应该能够使用正确的方法将模型函数串在一起(未经测试,因为我正在写下我的想法):
输入=T.vector()
enc=l1。编码(输入)
输出=l2.编码(enc)
f=无功能([输入],输出)
real_transformation=f(real_data)
要返回,可以使用ae_layer.decode()
方法执行同样的操作。
如果这些是和MLP
的层的一部分,则可以在MLP
上调用.fprop()
方法来向上遍历所有层。