我想了解LSTM RNN如何工作以及它們如何在Keras中實現以便能夠解決二進制分類問題。我的代碼和我使用的數據集在下面可見。當我編譯代碼時,我得到一個錯誤TypeError: __init__() got multiple values for keyword argument 'input_dim'
,任何人都可以幫忙嗎?keras中的LSTM實現使用特定的數據集
from keras.models import Sequential
from keras.layers import LSTM
from keras.layers.embeddings import Embedding
from keras.layers import Dense
from sklearn.cross_validation import train_test_split
import numpy
from sklearn.preprocessing import StandardScaler # data normalization
seed = 7
numpy.random.seed(seed)
dataset = numpy.loadtxt("sorted output.csv", delimiter=",")
X = dataset[:,0:4]
scaler = StandardScaler(copy=True, with_mean=True, with_std=True) #data normalization
X = scaler.fit_transform(X) #data normalization
Y = dataset[:4]
# split into 67% for train and 33% for test
X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=0.33, random_state=seed)
# create model
model = Sequential()
model.add(Embedding(12,input_dim=4,init='uniform',activation='relu'))
model.add(Dense(4, init='uniform', activation='relu'))
model.add(LSTM(100))
model.add(Dense(1, init='uniform', activation='sigmoid'))
# Compile model
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
# Fit the model
model.fit(X_train, y_train, validation_data=(X_test,y_test), nb_epoch=150, batch_size=10)
這與神經網絡theano或keras無關。唯一的問題似乎是'numpy.loadtxt(「sorted output.csv」,delimiter =「,」)'找不到'sorted output.csv'文件。你確定它存在於你啓動你的應用程序的目錄中嗎?也嘗試一個絕對路徑,如果這無助於嘗試刪除文件名中的空格。我只會相信你的「但我試圖導入的數據集存在」,如果你有python代碼確認這個文件在numpy函數被調用之前就存在了...... – example
我確信我的數據集存在於工作目錄中,我在同一個數據集上嘗試了一個不同的NN(不是一個經常出現的),它工作得很好。所以唯一的選擇是我的RNN網絡沒有正確實施。 – Adriano10
您的NN永遠不會看到文件名。因此它不會產生提供的錯誤。通常,當python發生錯誤時你會得到一個堆棧跟蹤。用它來找出錯誤發生的位置,併爲我們提供發生的線路。 – example