Tôi đang học cách sử dụng Keras và tôi đã thành công hợp lý với bộ dữ liệu được dán nhãn của mình bằng cách sử dụng các ví dụ trên Deep Learning for Python của Chollet . Tập dữ liệu là ~ 1000 Chuỗi thời gian với độ dài 3125 với 3 lớp tiềm năng.
Tôi muốn vượt xa các lớp Mật độ cơ bản mang lại cho tôi tỷ lệ dự đoán khoảng 70% và cuốn sách tiếp tục thảo luận về các lớp LSTM và RNN.
Tất cả các ví dụ dường như sử dụng bộ dữ liệu với nhiều tính năng cho từng thời gian và tôi đang cố gắng tìm ra cách triển khai dữ liệu của mình.
Ví dụ: nếu tôi có Dòng thời gian 1000x3125, làm cách nào để cung cấp thứ đó vào thứ gì đó như lớp SimpleRNN hoặc LSTM? Tôi có thiếu một số kiến thức cơ bản về những gì các lớp này làm không?
Mã hiện tại:
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()