import pandas as pd
import numpy as np
from keras.models import Sequential
from keras.layers import Dense
from keras.layers import Dropout
from keras.layers import LSTM
from keras.optimizers import Adam
from sklearn.preprocessing import MinMaxScaler
def create_dataset(dataset, datasetClass, look_back):
dataX, dataY = [], []
for i in range(len(dataset)-look_back-1):
a = dataset[i:(i+look_back), 0]
dataX.append(a)
dataY.append(datasetClass[:,(i+look_back):(i+look_back+1)])
return np.array(dataX), np.array(dataY)
def one_hot_encode(dataset):
data = np.zeros((11, len(dataset)),dtype='int')
for i in range(len(dataset)):
data[dataset[i]-1,i] = 1
return data
#Set a seed for repeatable results
np.random.seed(12)
dataframe = pd.read_csv('time-series.csv', usecols=[1], engine='python')
dataset = dataframe.values
dataset = dataset.astype('float32')
dataframeClass = pd.read_csv('time-series-as-class.csv', usecols=[1], engine='python')
datasetClass = dataframeClass.values
datasetClass = datasetClass.astype('int')
datasetClass = one_hot_encode(datasetClass)
#normalize input vals
scaler = MinMaxScaler(feature_range=(0, 1))
dataset = scaler.fit_transform(dataset)
#separate to test/train
train_size = int(len(dataset) * 0.67)
test_size = len(dataset) - train_size
train, test = dataset[0:train_size, :], dataset[train_size:len(dataset), :]
trainClass, testClass = datasetClass[:, 0:train_size,], datasetClass[:, train_size:len(dataset)]
#set up sliding windows
look_back = 150
trainX, trainY = create_dataset(train, trainClass, look_back)
testX, testY = create_dataset(test, testClass, look_back)
#reformat for proper passing to nn
trainX = np.reshape(trainX, (trainX.shape[0], 1, trainX.shape[1]))
testX = np.reshape(testX, (testX.shape[0], 1, testX.shape[1]))
trainY = np.squeeze(trainY, 2)
testY = np.squeeze(testY, 2)
# create and fit the LSTM network
model = Sequential()
model.add(LSTM(15, input_shape=(1,look_back)))
model.add(Dense(22,activation='tanh'))
model.add(Dropout(0.2))
model.add(Dense(11,activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer=Adam(), metrics=['categorical_accuracy'])
print(model.summary())
model.fit(trainX, trainY, epochs=90, batch_size=1, verbose=2)
# make predictions
trainPredict = model.predict(trainX)
testPredict = model.predict(testX)
मैं इस Ubuntu पर और Windows पर चलने गए हैं। 2.0.5 (कोंडा के माध्यम से उपलब्ध नवीनतम संस्करण) के साथ ubuntu पर keras v 2.0.4 और 2.0.8 के साथ विंडोज़ पर परीक्षण किया गयाएक ही कोड, खिड़कियां/ubuntu पर बहुत अलग सटीकता (Keras/Tensorflow)
विंडोज़ पर सटीकता 17% है और स्पष्ट क्रॉसेंट्रॉपी ~ 2 पर है, धीरे-धीरे converges लेकिन यह लगातार शुरू होता है वहाँ
ubuntu पर सटीकता 98% है और स्पष्ट crossentropy 0 प्रतीत होता है, और यह वास्तव में
केवल कोड अंतर csv फ़ाइलें करने के लिए पथ है, csv परिवर्तन नहीं करता है फाइलें बिल्कुल वही हैं। संभवतः इतना कठोर अंतर क्या हो सकता है?
था अंतर एक या दो प्रतिशत कर दिया गया है, मैं/इसे बंद लिख सकता है छोड़ने वालों के रूप में बेतरतीब ढंग से आरंभ tf, लेकिन है, क्योंकि यह शुद्ध मौका होने के लिए
संपादित बहुत ज्यादा है: समाधान स्पष्ट सीएसवी फिक्सिंग जा साबित हुई फाइलें, हालांकि वे utf-8 थे, जाहिर है कि उन्हें विंडोज़ में बनाए जाने पर लिनक्स के साथ अच्छा खेलने के लिए कुछ और आवश्यक है। मुझे यकीन है कि अगर मैं अपने खुद के जवाब चिह्नित करने के लिए अनुमति दी हूँ के रूप में "स्वीकार किए जाते हैं"
आप 2 दिनों के बाद अपना जवाब स्वीकार कर पाएंगे। – charlesreid1