2016-10-06 2 views
1

Я пытаюсь понять, как работают RNN LSTM и как они могут быть реализованы в Keras, чтобы иметь возможность решить проблему с двоичной классификацией. Мой код и набор данных, которые я использую, видны ниже. Когда я компилирую код, я получаю сообщение об ошибке TypeError: __init__() got multiple values for keyword argument 'input_dim', может ли кто-нибудь помочь?Реализация LSTM в keras Использование определенного набора данных

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) 

enter image description here

+0

Это не имеет никакого отношения к нейронным сетям, анано или кера. единственная проблема заключается в том, что 'numpy.loadtxt (" sorted output.csv ", delimiter =", ")' не может найти файл 'sorted output.csv'. вы уверены, что он существует в каталоге, из которого вы запускаете приложение? также попробуйте абсолютный путь, и если это не поможет удалить пробелы в имени файла. Я только верю, что ваш «но набор данных, который я пытаюсь импортировать, существует», если у вас есть код python, подтверждающий, что этот файл существует до вызова функции numpy ... – example

+0

Я уверен, что мой набор данных находится в рабочем каталоге, поскольку Я пытаюсь использовать другой NN (не повторяющийся) в том же наборе данных, который работает очень хорошо. Таким образом, единственный вариант заключается в том, что моя сеть RNN реализована неправильно. – Adriano10

+0

Ваш NN никогда не видит имя файла. Таким образом, он никогда не приведет к предоставленной ошибке. Как правило, вы получаете стек, когда ошибка возникает в python. Используйте его, чтобы выяснить, где произошла ошибка, и предоставить нам линию, в которой она была. – example

ответ

0

Похоже, две отдельные вопросы здесь.

Что касается использования LSTMs/Keras, есть несколько хороших учебных пособий. Попробуйте this one, который также описывает проблему двоичной классификации. Сообщите, если у вас есть конкретная проблема или область, которую вы не понимаете.

Что касается проблемы с открытием файла, возможно, пробел в имени файла вызывает проблему. Проверьте this answer, чтобы узнать, если это поможет.

+0

Мне известно о том, что вы предоставили учебник, и я действительно создал много поддерживающих NNs успешно. Однако проблема возникает, когда я пытаюсь построить рекуррентный NN (для того же набора данных, который я использовал для форвардных) и, в частности, LSTM NN – Adriano10

0

Это на самом деле случай, когда сообщение об ошибке, которое вы получаете, идеально подходит к точке. (Я хочу, чтобы это всегда было бы в случае с Python и Keras ...)

слой конструктор Keras' Встраивание имеет this signature: keras.layers.embeddings.Embedding(input_dim, output_dim, ...)

Однако, вы строите его с помощью: Embedding(12,input_dim=4,...)

Итак, укажите размер входного и выходного измерений, а также исправьте порядок и имена параметров. Основываясь на таблице, которую вы включили в вопрос, я предполагаю, что 4 - это ваше измерение ввода, а 12 - ваше размерность; то это будет Embedding(input_dim=4, output_dim=12, ...).

Смежные вопросы