② 데이터를 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)