더북(TheBook)

② 데이터를 ndarray(N차원의 배열 객체)로 변환합니다. ndarray는 같은 종류의 데이터를 담을 수 있는 포괄적인 다차원 배열을 의미하며, 배열 표현은 다음과 같습니다.

▲ 그림 10-18 배열 표현

따라서 0번째 축에서 5000번째 열까지의 데이터를 반환합니다.

데이터셋이 준비되었기 때문에 이제 모델을 훈련시킵니다.

from keras.layers import Input, Lambda, Dense
from keras.models import Model
import keras.backend as K

def ELMoEmbedding(x):
    return embed(tf.squeeze(tf.cast(x, tf.string)), signature="default", as_dict=True)["default"] ------ ①

input_text = Input(shape=(1,), dtype=tf.string)
embedding = Lambda(ELMoEmbedding, output_shape=(1024,))(input_text)
dense = Dense(256, activation='relu')(embedding)
pred = Dense(2, activation='softmax')(dense)
model = Model(inputs=[input_text], outputs=pred)
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) ------ ②

with tf.Session() as session:
    K.set_session(session)
    session.run(tf.global_variables_initializer())
    session.run(tf.tables_initializer())
    history = model.fit(x_train, y_train, epochs=1, batch_size=32)
    model.save_weights('./elmo-model.h5') ------ 모델을 훈련한 결과 가중치를 h5 파일 포맷으로 만들어 저장

with tf.Session() as session:
    K.set_session(session)
    session.run(tf.global_variables_initializer())
    session.run(tf.tables_initializer())
    model.load_weights('./elmo-model.h5')
    predicts = model.predict(x_test, batch_size=32) ------ 앞서 훈련으로 저장되었던 가중치를 이용하여 검증 데이터셋에 대한 예측 진행
   
y_test = decode(le, y_test)
y_preds = decode(le, predicts)
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.