DataScience
article thumbnail
728x90
 
<code />
from tensorflow.keras.layers import LSTM from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Embedding from tensorflow.keras.layers import Dense
 
<code />
import numpy as np from tensorflow.keras.datasets import imdb (x_train_all, y_train_all), (x_test, y_test) = imdb.load_data(skip_top=20, num_words=1000) for i in range(len(x_train_all)): x_train_all[i] = [w for w in x_train_all[i] if w > 2] x_train = x_train_all[random_index[:20000]] y_train = y_train_all[random_index[:20000]] x_val = x_train_all[random_index[20000:]] y_val = y_train_all[random_index[20000:]] maxlen=100 #타임 스텝의 길이가 100인 시퀀스 데이터를 만듭니다. x_train_seq = sequence.pad_sequences(x_train, maxlen=maxlen) x_val_seq = sequence.pad_sequences(x_val, maxlen=maxlen)
 
<code />
model_lstm = Sequential() model_lstm.add(Embedding(1000, 32)) model_lstm.add(LSTM(8)) model_lstm.add(Dense(1, activation='sigmoid')) model_lstm.summary()
<code />
Model: "sequential_3" _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= embedding_2 (Embedding) (None, None, 32) 32000 lstm_2 (LSTM) (None, 8) 1312 dense_1 (Dense) (None, 1) 9 ================================================================= Total params: 33,321 Trainable params: 33,321 Non-trainable params: 0 _________________________________________________________________
 
<code />
model_lstm.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy']) history = model_lstm.fit(x_train_seq, y_train, epochs=10, batch_size=32, validation_data=(x_val_seq, y_val))
<code />
Epoch 1/10 625/625 [==============================] - 6s 8ms/step - loss: 0.4474 - accuracy: 0.7947 - val_loss: 0.3754 - val_accuracy: 0.8362 Epoch 2/10 625/625 [==============================] - 5s 8ms/step - loss: 0.3344 - accuracy: 0.8604 - val_loss: 0.3557 - val_accuracy: 0.8408 Epoch 3/10 625/625 [==============================] - 5s 8ms/step - loss: 0.3116 - accuracy: 0.8686 - val_loss: 0.3571 - val_accuracy: 0.8416 Epoch 4/10 625/625 [==============================] - 5s 8ms/step - loss: 0.2954 - accuracy: 0.8756 - val_loss: 0.3573 - val_accuracy: 0.8432 Epoch 5/10 625/625 [==============================] - 5s 8ms/step - loss: 0.2809 - accuracy: 0.8821 - val_loss: 0.3708 - val_accuracy: 0.8410 Epoch 6/10 625/625 [==============================] - 5s 8ms/step - loss: 0.2681 - accuracy: 0.8887 - val_loss: 0.3861 - val_accuracy: 0.8394 Epoch 7/10 625/625 [==============================] - 5s 8ms/step - loss: 0.2563 - accuracy: 0.8921 - val_loss: 0.3869 - val_accuracy: 0.8372 Epoch 8/10 625/625 [==============================] - 5s 8ms/step - loss: 0.2433 - accuracy: 0.8978 - val_loss: 0.4016 - val_accuracy: 0.8344 Epoch 9/10 625/625 [==============================] - 5s 8ms/step - loss: 0.2325 - accuracy: 0.9032 - val_loss: 0.4087 - val_accuracy: 0.8316 Epoch 10/10 625/625 [==============================] - 5s 8ms/step - loss: 0.2252 - accuracy: 0.9071 - val_loss: 0.4177 - val_accuracy: 0.8336
 
<code />
import matplotlib.pyplot as plt plt.plot(history.history['loss']) plt.plot(history.history['val_loss']) plt.show() plt.plot(history.history['accuracy']) plt.plot(history.history['val_accuracy']) plt.show()
<code />
loss, accuracy = model_lstm.evaluate(x_val_seq, y_val, verbose=0) print(accuracy)
<code />
0.8335999846458435
profile

DataScience

@Ninestar

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!