Lua판 제로로부터 만드는 Deep Learning 그 5[MNIST화상의 표시]
과거 기사
Lua판 제로로부터 만드는 Deep Learning 그 1[퍼셉트론의 실장]
Lua판 제로로부터 만드는 Deep Learning 그 2[활성화 함수]
Lua판 제로로부터 만드는 Deep Learning 그 3[3층 뉴럴 네트워크의 실장]
Lua판 제로로부터 만드는 Deep Learning 그 4[소프트 맥스 함수의 구현]
MNIST 표시
이번은 MNIST 화상 데이터의 표시입니다.
이 근처는 파이썬과 마음이 다릅니다. 우선 PIL을 사용할 수 없습니다. 대신 torch 이미지를 설치합시다.
이미지 패키지
이하의 커멘드로 인스톨 가능합니다.
luarocks 설치
$ luarocks install image
luarocks는 Lua의 패키지 관리 도구입니다. 가지고 있지 않은 사람은 설치합시다.
luarocks 설치
$ brew install luarocks
image 패키지를 설치할 수 있으면 테스트로 확인해 보십시오.
다음과 같이 되면 우선 괜찮습니다.
이미지 패키지 테스트
$ luajit -limage -e "image.test()"
seed: 1497280170
Running 41 tests
1/41 CompressAndDecompress ............................................. [PASS]
2/41 test_transformation_largeByteImage_vflip .......................... [PASS]
3/41 CompressAndDecompressPNG .......................................... [PASS]
4/41 test_inplace_hflip ................................................ [PASS]
5/41 bilinearUpscale_ByteTensor ........................................ [PASS]
(省略)
39/41 test_textdraw ..................................................... [PASS]
40/41 byteGaussian ...................................................... [PASS]
41/41 y2jetByteTensor ................................................... [PASS]
Completed 83 asserts in 41 tests with 0 failures and 0 errors
에서는 훈련 이미지를 표시하는 스크립트는 다음과 같습니다.
showmnist.lua
require 'image'
print '==> downloading dataset'
-- Note: files were converted from their original LUSH format
-- to Torch's internal format.
-- The SVHN dataset contains 3 files:
-- + train: training data
-- + test: test data
local tar = 'http://torch7.s3-website-us-east-1.amazonaws.com/data/mnist.t7.tgz'
if not paths.dirp('mnist.t7') then
os.execute('wget ' .. tar)
os.execute('tar xvf ' .. paths.basename(tar))
end
local train_file = 'mnist.t7/train_32x32.t7'
local test_file = 'mnist.t7/test_32x32.t7'
----------------------------------------------------------------------
print '==> loading dataset'
-- We load the dataset from disk, it's straightforward
local trainData = torch.load(train_file,'ascii')
local testData = torch.load(test_file,'ascii')
print('Training Data:')
print(trainData)
print('Test Data:')
print(testData)
----------------------------------------------------------------------
print '==> visualizing data'
-- Visualization
print(trainData.labels[1]-1)
print(trainData.data[1]:size(2) * trainData.data[1]:size(3))
print(trainData.data[1]:size())
image.save('trainData1.png', image.toDisplayTensor(trainData.data[1]))
실행 예는 다음과 같습니다.
실행 예
$ th showmnist.lua
==> downloading dataset
(省略)
Length: 11706980 (11M) [application/x-compressed]
Saving to: ‘mnist.t7.tgz’
mnist.t7.tgz 100%[===================>] 11.16M 2.19MB/s in 7.6s
2017-06-13 00:14:02 (1.47 MB/s) - ‘mnist.t7.tgz’ saved [11706980/11706980]
x mnist.t7/
x mnist.t7/test_32x32.t7
x mnist.t7/train_32x32.t7
==> loading dataset
Training Data:
{
data : ByteTensor - size: 60000x1x32x32
labels : ByteTensor - size: 60000
}
Test Data:
{
data : ByteTensor - size: 10000x1x32x32
labels : ByteTensor - size: 10000
}
==> visualizing data
5
1024
1
32
32
[torch.LongStorage of size 3]
python 의 경우에서는 직접 표시하고 있었습니다만, 기사 을 다루어 보면 아무것도 추천할 수 없는 것 같습니다. 확실히 실제로 여러 가지 시도해 보았습니다만 display는 th명령으로는 움직이지 않고, 마찬가지로 itorch등도 th명령으로 움직일 수 없었습니다. 서투른 환경도 괴롭히고 싶지 않기 때문에 png로 출력하고 있습니다. 이미지는 다음과 같습니다.
또 스크립트를 참조해 주시면 라벨의 값을 1 빼고 있습니다. 이는 라벨의 값이 실제 이미지의 수치보다 1 크기이기 때문입니다. 왜 그렇게 되어 있는지 조금 나에게는 의도를 몰랐습니다. 아시는 분이 계시면 가르쳐 주시면 도움이 됩니다.
또 python 때는 이미지 데이터는 1차원 벡터로 저장되고 있었습니다만, 이쪽은 처음부터 Tensor 가 되어 있으므로 그 근처는 알기 쉽습니다.
또 Lua의 배열(테이블형)은 1부터 인덱스가 시작됩니다. 익숙하지 않은 사람은 주의하는 것이 좋을지도 모릅니다.
결론
이번은 이상입니다.
다음에 추론 처리를 실장해 보려고 생각합니다.
고맙습니다.
참고
torch/tutorials
itorch._iopub socket not set #63
Reference
이 문제에 관하여(Lua판 제로로부터 만드는 Deep Learning 그 5[MNIST화상의 표시]), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Kazuki-Nakamae/items/6373443510f94a67e910텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)