RNN with keras
2879 단어 keras
RNN은 NLP 분야에서 광범위하게 응용되고 있는데 그 중 하나는 언어 모델을 구축하는 것이다.언어 모델은 우리가 앞에서 정한 상황에서 다음 단어의 가능성을 예측할 수 있게 한다.
여기서 우리는 언어 모델을 바탕으로 상위 10개의 문자를 정한 상황에서 다음 문자를 예측한다.
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Mon Jun 4 17:18:03 2018
@author: john
"""
from keras.layers import Dense,Activation
from keras.layers.recurrent import SimpleRNN
from keras.models import Sequential
from keras.utils.vis_utils import plot_model
import numpy as np
####load data
fin=open('./11-0.txt','rb')
lines=[]
for line in fin:
line=line.strip().lower()
line=line.decode('ascii','ignore')
if len(line)==0:
continue
lines.append(line)
fin.close()
text=' '.join(lines)
####creat the lookup tables
chars=set([c for c in text])
nb_chars=len(chars)
char2index=dict((c,i) for i,c in enumerate(chars))
index2char=dict((i,c) for i,c in enumerate(chars))
####create the input and label texts
SEQLEN=10
STEP=1
input_chars=[]
label_chars=[]
for i in range(0,len(text)-SEQLEN,STEP):
input_chars.append(text[i:i+SEQLEN])
label_chars.append(text[i+SEQLEN])
####vectorize teh input data and label texts
X=np.zeros((len(input_chars),SEQLEN,nb_chars),dtype=np.bool)
y=np.zeros((len(input_chars),nb_chars),dtype=np.bool)
for i,input_char in enumerate(input_chars):
for j,ch in enumerate(input_char):
X[i,j,char2index[ch]]=1
y[i,char2index[label_chars[i]]]=1
####define the model
HIDDEN_SIZE=128
BATCH_SIZE=128
NUM_ITERATIONS=25
NUM_EPOCHES_PER_ITERATION=1
NUM_PERDS_PER_EPOCH=100
model=Sequential()
model.add(SimpleRNN(HIDDEN_SIZE,return_sequences=False,input_shape=(SEQLEN,nb_chars),
unroll=True))
model.add(Dense(nb_chars,activation='softmax'))
model.compile(loss='categorical_crossentropy',optimizer='rmsprop')
####test
for iteration in range(NUM_ITERATIONS):
print('='*50)
print('iteration #:%d'%(iteration))
model.fit(X,y,batch_size=BATCH_SIZE,epochs=NUM_EPOCHES_PER_ITERATION)
test_idx=np.random.randint(len(input_chars))
test_chars=input_chars[test_idx]
print('Generating from seed:%s'%(test_chars))
print(test_chars,end=' ')
for i in range(NUM_PERDS_PER_EPOCH):
Xtest=np.zeros((1,SEQLEN,nb_chars))
for i,ch in enumerate(test_chars):
Xtest[0,i,char2index[ch]]=1
pred=model.predict(Xtest,verbose=0)[0]
ypred=index2char[np.argmax(pred)]
print(ypred,end='')
test_chars=test_chars[1:]+ypred
테스트는 열 개의 문자를 주어서 그것을 계속 순환해서 생성하게 하고 어떤 물건을 생성할 수 있는지 보는 것이다.
2. LSTM---감정 분석
LSTM은 다대일 RNN을 훈련시키는 데 쓸 수 있다.
우리는 이 훈련 모델에서 모델이 한 문장을 입력하고 값을 출력한다(긍정적이거나 소극적이다).우리 훈련집에는 formUMICH SI650 Kaggle 경연대회가 약 7000개 포함되어 있다.문장마다 label 0 또는 1.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
keras에서 훈련 데이터를 바탕으로 하는 몇 가지 방식 비교(fit와fit_generator)train_on_batch 함수는 단일 데이터를 받아들여 역방향 전파를 실행한 다음에 모델 파라미터를 업데이트합니다. 이 데이터의 크기는 임의로 할 수 있습니다. 즉, 명확한 대량 크기를 제공할 필요가 없고 정밀화 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.