불가사의한 귀속 신경 네트워크
Andrej Karpathy는 소스 코드char-rnn을 제공했지만 Torch+Lua로 썼습니다.기계 학습이 산꼭대기에 즐비하고 틀이 많아서 우리 추종자들은 어찌할 바를 몰랐다.처음에는 VB, 그 다음은 C++, 그리고 Matlab, 자신이 I can speak matlab라고 생각한 후에Python+Theano가 또 왔다.Theano는 많이 배우지 못했어요. 이 사람들이 또 Torch+Lua를 만들었어요. 정말 배울 수가 없어요.(현재 관심 있는 분포식 플랫폼 scala는 볼 시간이 없다) 문장으로 볼 때 이중적인 RNN 네트워크가 될 것 같아서 Theano로 실현하기로 했다.
1 코드 참고
char-rnn의 기본 프레임워크는 다음과 같습니다. 즉, 두 겹으로 겹쳐진 RNN:
y1 = rnn1.step(x)
y = rnn2.step(y1)
Lua는 몰라도 Python과 비슷해 보여요.(그리고 if...end라는 구조는 파이썬보다 좋아 보인다.)마스터 실행 파일을 분석하면 마스터 실행 파일은 다음과 같습니다.https://github.com/karpathy/char-rnn/blob/master/train.lua
require 'torch' # = import torch
require 'nn' # = import nn
local LSTM = require 'model.LSTM' # LSTM, RNN
cmd = torch.CmdLine() # command line
cmd:text() # = print ''
cmd:text('Train a character-level language model')
cmd:option('-rnn_size', 128, 'size of LSTM internal state') # RNN internal 128
cmd:option('-num_layers', 2, 'number of layers in the LSTM') # LSTM
local vocab_size = loader.vocab_size #
protos.rnn = LSTM.lstm(vocab_size, opt.rnn_size, opt.num_layers, opt.dropout) # LSTM
protos.criterion = nn.ClassNLLCriterion() #
다시 보다https://github.com/karpathy/char-rnn/blob/master/model/LSTM.lua, 이것은 LSTM의 종류라는 것을 이해합니다.
function LSTM.lstm(input_size, rnn_size, n, dropout) # n , 。 。
-- there will be 2*n+1 inputs
local inputs = {}
table.insert(inputs, nn.Identity()()) -- x # ?
for L = 1,n do
table.insert(inputs, nn.Identity()()) -- prev_c[L]
table.insert(inputs, nn.Identity()()) -- prev_h[L]
end # , ?
if L == 1 then # ,input_size X
x = OneHot(input_size)(inputs[1])
input_size_L = input_size
else # ,input_size
x = outputs[(L-1)*2]
input_size_L = rnn_size
end
첫 번째 레이어 RNN의 출력은 argmax가 필요하고 다음 레이어 RNN이 필요합니까?코드로 볼 때 필요 없을 것 같습니다.
2 Theano로 이루어집니다.
Theano_ 사용하기lstm 라이브러리는 두 개의 LSTM RNN 네트워크를 실현합니다.사용된 데이터 세트는
input.txt
, 그 안에는 약간의 Shakespear가 쓴 대본이 있다.lstm_shake.py
파일은 문자의 서열을 바탕으로 하는 모델을 구축한다. 이 모델은 Shakespear의 대본을 배워서 Shakespear처럼 대본을 쓸 수 있기를 바란다.3 테스트 실행
little shakespear를 실행하는 예입니다.Epoch 50개당 T를 이니셜로 입력한 다음 샘플링 결과를 내보냅니다.
python lstm_shake.py
epoch 0, error=4504142.19
TPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP
epoch 10, error=4346742.41
epoch 20, error=3667818.53
epoch 30, error=3452454.01
epoch 40, error=3378974.10
epoch 50, error=3290961.33
T I I It t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t
t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t t
t t t t t t t t t t t t t t t t t t t t
epoch 60, error=3220026.99
epoch 70, error=3174889.48
epoch 80, error=3145530.92
epoch 90, error=3121806.02
epoch 100, error=3100589.85
T Ih tt tt tt tt tt tt tt tt tt tt tt tt tt tt tt tt tt tt tt tt tt tt tt tt tt
tt tt tt tt tt tt tt tt tt tt tt tt tt tt tt tt tt tt tt tt tt tt tt tt tt tt tt
tt tt tt tt tt tt tt tt tt tt tt tt tt t
epoch 110, error=3083279.73
epoch 120, error=3068120.72
CPU만 있고 매우 느립니다.그리고 최적화 처리를 하지 않아 문장의 길이가 같지 않아 낭비적이다.minibatch를 사용하지 않아서 메모리 사용량이 매우 높습니다.CPU 사용률도 높지 않습니다.
학습의 효과도 좋지 않은 것 같아서 Shakespear와 비교할 수 없다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.