网上一堆说看看路径什么的,感觉都在瞎扯淡。
可以试着type() 一下自己要imshow的变量,看看是不是数据类型不对应。
自己type了一下,结果发现自己要保存的变量压根就不是numpy的数组,而是chainer.Variable.variable的数据类型,使用该数据类型的data属性获得numpy数组。
with chainer.no_backprop_mode() and chainer.using_config("train", False):
y_onehot, z = model.encode_x_yz(images_test, apply_softmax_y=True)
images_test_reconstruction = model.decode_yz_x(y_onehot, z)
images_test_reconstruction = (images_test_reconstruction + 1.0) / 2.0
images_test = (images_test + 1.0) / 2.0
pylab.figure(figsize=(38,4))
for n in range(num_clusters):
#origal
pylab.subplot(2, num_clusters, n+1)
pylab.imshow(images_test[n*num_plots_per_cluster].reshape((image_width, image_height)), interpolation="none")
pylab.gray()
pylab.axis("off")
#reconsruct
image = images_test_reconstruction[n * num_plots_per_cluster].reshape((image_width, image_height))
pylab.subplot(2, num_clusters, num_clusters+n+1)
pylab.imshow(image.data, interpolation="none")
pylab.gray()
pylab.axis("off")
fig = pylab.gcf()
fig.set_dpi(720)
pylab.savefig("clusters.png")
pylab.close()