2016-06-06 3 views
3

나는 토치 7을 사용하기 시작했고 분류를 위해 내 데이터 세트를 만들고 싶습니다. 이미 픽셀 이미지와 해당 레이블을 만들었습니다. 그러나 나는 그 데이터를 토치에 어떻게 공급할 지 모른다. 나는 다른 사람들로부터 몇몇 코드를 읽고 확장자가 '.t7'인 데이터 셋을 사용하고 있으며 그것이 텐서 타입이라고 생각한다는 것을 알게되었다. 맞아? 그리고 저는 어떻게해서 픽셀 이미지를 변환 할 수 있을지 의아해합니다. (사실, Matrix와 함께 MNIST 데이터 세트를 사용하여 만들었습니다.) t7 확장과 호환 가능합니다. t7 형식의 데이터 집합 구조가 있어야하지만 찾을 수 없습니다 (레이블도 마찬가지입니다).토치 데이터 세트의 구조는 무엇입니까?

요약하면 픽셀 이미지와 레이블이 있으며 그 이미지를 토치와 호환되는 t7 형식으로 변환하려고합니다.

미리 감사드립니다.

+0

나는 데이터를 받아 어떤 형식 토치 확실하지 않다, 그러나'.7z' 확장 (http://www.7-zip.org/) 7-ZIP으로 압축 된 파일에 해당 . 사람들이이 형식의 데이터를 제공하면 사용하기 전에 압축을 풀어야합니다. 즉, 토치가 .7z 파일을 가져간다는 것은 의심의 여지가 없습니다. – RPM

+0

@RPM 네 말이 맞아. 내 실수 야. 이것은 7z가 아니라 t7입니다. 감사! –

답변

4

데이터 세트 '.t7'은 레이블이있는 Tensors의 테이블입니다. 예를 들어 다음 루아 코드 :

if (not paths.filep("cifar10torchsmall.zip")) then 
    os.execute('wget -c https://s3.amazonaws.com/torch7/data/cifar10torchsmall.zip') 
    os.execute('unzip cifar10torchsmall.zip') 
end 
Readed_t7 = torch.load('cifar10-train.t7') 
print(Readed_t7) 

가 itorch을 반환합니다 : 파일을 의미

{ 
    data : ByteTensor - size: 10000x3x32x32 
    label : ByteTensor - size: 10000 
} 

"라벨"이라는 두 ByteTensor 하나의 표시 "데이터"와 다른 하나의 테이블을 포함 .

질문에 대답하려면 먼저 이미지 (예 : torchx : https://github.com/nicholas-leonard/torchx/blob/master/README.md)를 읽고 레이블의 텐서가있는 테이블에 넣어야합니다. 다음 코드는 당신을 돕기위한 초안입니다. 두 개의 클래스가 있고 모든 이미지가 같은 폴더에 있고 해당 클래스를 통해 정렬 된 경우를 고려합니다.

require 'torchx'; 

--Read all your dataset (the chosen extension is png) 
files = paths.indexdir("/Path/to/your/images/", 'png', true) 
data1 = {} 
for i=1,files:size() do 
    local img1 = image.load(files:filename(i),3) 
    table.insert(data1, img1) 
end 

--Create the table of label according to 
label1 = {} 
for i=1, #data1 do 
    if i <= number_of_images_of_the_first_class then 
     label1[i] = 1 
    else 
     label1[i] = 2 
    end 
end 

--Reshape the tables to Tensors 
label = torch.Tensor(label1) 
data = torch.Tensor(#data1,3,16,16) 
for i=1, #data1 do 
    data[i] = data1[i] 
end 

--Create the table to save 
Data_to_Write = { data = data, label = label } 

--Save the table in the /tmp 
torch.save("/tmp/Saved_Data.t7", Data_to_Write) 

덜 위험한 코드를 만들 수 있지만이 단계는 모든 단계를 자세히 설명하고 토치 7과 Jupyter 5.0.0에서 작동합니다.

희망이 있습니다.

안부

관련 문제