2017-10-15 5 views
0

は、私は私のネットワークに使用されている画像はOKだったことを見てみたかったので、私は次のコードを使用してそれらの束を保存:torchvision MNISTローダーが正しく動作していないか、間違っていますか?

train_set = dset.MNIST(root=root, train=True, transform=transforms.ToTensor(), download=download) 

for it, (img, target) in enumerate(train_loader): 
    X = Variable(img) 
    tar = Variable(target) 
    X = X.view(batch_size, -1) 
    cur_img_batch = X.data.numpy() 
    cur_tar_batch = tar.data.numpy() 
    for i in range(batch_size): 
     cur_img = cur_img_batch[i] 
     im = Image.fromarray(cur_img.reshape((28, 28)).astype('uint8') * 255) 
     if cur_tar_batch[i] == 8: 
      im.save(test_img_dir + 'iter_' + str(it) + '_sample_' + str(i) + '.png') 

これはクリーンなコードではありませんが、それはちょうど束を節約しますすべての画像に「8」と表示されます。それらを開くと、ほとんどの小さなものが完全にfineであっても、そのほとんどはthisのように見えます。

何か間違っていますか?コメントから

+0

この行 'cur_img.reshape((28,28))astype( 'uint8')* 255'データを255に掛ける前に整数に変換していますか? –

+0

もちろん!これはそれでした - ありがとうございました:) –

+0

正しい行は次のようになります:im = Image.fromarray((cur_img.reshape((28,28))* 255).astype( 'uint8')) –

答えて

0

:問題は、このように0または255

更新されたコードを有する画像が得られ、255を乗算する前に整数に正規化された画像を変換し、このラインcur_img.reshape((28, 28)).astype('uint8') * 255

ました。

​​3210
関連する問題