Keras'ı nasıl kullanacağımı öğreniyorum ve Chollet'in Python için Deep Learning'deki örneklerini kullanarak etiketli veri setimle makul bir başarı elde ettim . Veri seti 3 potansiyel sınıflı 3125 uzunluğunda ~ 1000 Zaman Serisidir.
Bana yaklaşık% 70 tahmin oranı veren temel Yoğun katmanların ötesine geçmek istiyorum ve kitap LSTM ve RNN katmanlarını tartışmaya devam ediyor.
Tüm örnekler, her zaman dizisi için birden çok özelliğe sahip veri kümeleri kullanıyor gibi görünüyor ve sonuç olarak verilerimi nasıl uygulayacağımı çözmek için uğraşıyorum.
Örneğin, 1000x3125 Zaman Serim varsa, bunu SimpleRNN veya LSTM katmanı gibi bir şeyle nasıl beslerim? Bu katmanların ne yaptığına dair bazı temel bilgileri kaçırıyor muyum?
Mevcut kod:
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()