Saya sedang belajar cara menggunakan Keras dan saya sudah cukup berhasil dengan dataset berlabel menggunakan contoh-contoh pada Chollet's Deep Learning for Python . Kumpulan data adalah ~ 1000 Time Series dengan panjang 3125 dengan 3 kelas potensial.
Saya ingin melampaui lapisan Dense dasar yang memberi saya tingkat prediksi sekitar 70% dan buku ini membahas tentang lapisan LSTM dan RNN.
Semua contoh tampaknya menggunakan kumpulan data dengan beberapa fitur untuk setiap rentang waktu dan saya berjuang untuk mengetahui bagaimana mengimplementasikan data saya sebagai hasilnya.
Jika misalnya, saya memiliki Time Series 1000x3125, bagaimana cara memasukkannya ke dalam sesuatu seperti lapisan SimpleRNN atau LSTM? Apakah saya kehilangan beberapa pengetahuan mendasar tentang apa yang dilakukan lapisan ini?
Kode saat ini:
import pandas as pd
import numpy as np
import os
from keras.models import Sequential
from keras.layers import Dense
from keras.layers import LSTM, Dropout, SimpleRNN, Embedding, Reshape
from keras.utils import to_categorical
from keras import regularizers
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt
def readData():
# Get labels from the labels.txt file
labels = pd.read_csv('labels.txt', header = None)
labels = labels.values
labels = labels-1
print('One Hot Encoding Data...')
labels = to_categorical(labels)
data = pd.read_csv('ts.txt', header = None)
return data, labels
print('Reading data...')
data, labels = readData()
print('Splitting Data')
data_train, data_test, labels_train, labels_test = train_test_split(data, labels)
print('Building Model...')
#Create model
model = Sequential()
## LSTM / RNN goes here ##
model.add(Dense(3, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
print('Training NN...')
history = model.fit(data_train, labels_train, epochs=1000, batch_size=50,
validation_split=0.25,verbose=2)
results = model.evaluate(data_test, labels_test)
predictions = model.predict(data_test)
print(predictions[0].shape)
print(np.sum(predictions[0]))
print(np.argmax(predictions[0]))
print(results)
acc = history.history['acc']
val_acc = history.history['val_acc']
epochs = range(1, len(acc) + 1)
plt.plot(epochs, acc, 'bo', label='Training acc')
plt.plot(epochs, val_acc, 'b', label='Validation acc')
plt.title('Training and Validation Accuracy')
plt.xlabel('Epochs')
plt.ylabel('Loss')
plt.legend()
plt.show()