图像保存和加载在torch7中的不寻常行为

问题描述:

我注意到torch7有一个不寻常的行为。我对torch7有点了解。所以我不知道如何解释或纠正这种行为。图像保存和加载在torch7中的不寻常行为

所以,我使用的是CIFAR-10数据集。我简单地从CIFAR-10获取图像的数据,然后将其保存在我的目录中。当我加载保存的图像时,情况有所不同。

这里是我的代码 -

require 'image' 

i1 = testData.data[2] --fetching data from CIFAR-10 
image.save("1.png", i) --saving the data as image 

i2 = image.load("1.png") --loading the saved image 

if(i1 == i2) then --checking if image1(i1) and image2(i2) are different 
print("same") 
end 

这种行为预期?我认为png应该是无损的。

如果是这样如何可以纠正?

代码加载CIFAR-10 dataset-

-- load dataset 
    trainData = { 
    data = torch.Tensor(50000, 3072), 
    labels = torch.Tensor(50000), 
    size = function() return trsize end 
    } 
    for i = 0,4 do 
    local subset = torch.load('cifar-10-batches-t7/data_batch_' .. (i+1) .. '.t7', 'ascii') 
    trainData.data[{ {i*10000+1, (i+1)*10000} }] = subset.data:t() 
    trainData.labels[{ {i*10000+1, (i+1)*10000} }] = subset.labels 
    end 
    trainData.labels = trainData.labels + 1 

    local subset = torch.load('cifar-10-batches-t7/test_batch.t7', 'ascii') 
    testData = { 
    data = subset.data:t():double(), 
    labels = subset.labels[1]:double(), 
    size = function() return tesize end 
    } 
    testData.labels = testData.labels + 1 
    testData.data = testData.data:reshape(10000,3,32,32) 

==运算符比较指针2张量,而不是内容:

a = torch.Tensor(3, 5):fill(1) 
b = torch.Tensor(3, 5):fill(1) 
print(a == b) 
> false 
print(a:eq(b):all()) 
> true