火炬7中图像保存和加载的异常行为

时间:2016-04-03 08:58:58

标签: machine-learning torch

我注意到火炬7的异常行为。我对火炬了解一点。所以我不知道如何解释或纠正这种行为。

所以,我正在使用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数据集的代码 -

-- 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)

1 个答案:

答案 0 :(得分:1)

==运算符将指向两个张量的指针进行比较,而不是内容:

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