2016-06-29 28 views
5

Desidero creare un RNN di base che possa aggiungere due byte. Qui sono l'input e output, che si prevede di una semplice aggiuntaMancata corrispondenza delle dimensioni nelle telecamere LSTM

X = [[0, 0], [0, 1], [1, 1], [0, 1], [1, 0], [1, 0], [1, 1], [1, 0]] 

Cioè, X1 = 00101111 e X2 = 01110010

Y = [1, 0, 1, 0, 0, 0, 0, 1] 

ho creato il seguente modello sequenziale

model = Sequential() 
model.add(GRU(output_dim = 16, input_length = 2, input_dim = 8)) 
model.add(Activation('relu'`)) 
model.add(Dense(2, activation='softmax')) 
model.compile(loss = 'binary_crossentropy', optimizer = 'adam', metrics = ['accuracy']) 
model.summary() 

L'errore che get is something along

previsto lstm_input_1 avere 3 dimensioni, ma ha ottenuto array con forma (8L, 2L)

Quindi, se io aumento delle dimensioni cambiando X per

[[[0 0]] [[1 1]] [[1 1]] [[1 0]] [[0 0]] [[1 0]] [[0 1]] [[1 0]]] 

Poi i cambiamenti di errore per

previsto lstm_input_1 per avere la forma (None, 8, 2) ma ha matrice con forma (8L, 1L, 2L)

risposta

3

In Keras i modelli sequenziali prevedono un ingresso di forma (batch_size, sequence_length, input_dimension). Sospetto che sia necessario modificare le ultime due dimensioni della matrice di input. Ricorda, la dimensione batch non è definita in modo esplicito.

3

Change X per [[[0, 0], [0, 1], [1, 1], [0, 1], [1, 0], [1, 0], [1, 1], [1, 0]]] modo che la sua forma è (1, 8, 2)

2

Keras come input requiers dati 3D, come indicato per errore. Sono esempi, passaggi temporali, caratteristiche. Dato che hai (8L, 2L) Keras lo prende come 2D - [campioni, caratteristiche]. Al fine di risolvere il problema, fare qualcosa di simile

def reshape_dataset(train): 
    trainX = numpy.reshape(train, (train.shape[0], 1, train.shape[1])) 
    return numpy.array(trainX) 

x = reshape_dataset(your_dataset) 

ora X dovrebbe essere 8L,1,2L che è [campioni, passaggi di tempo, caratteristiche] - 3D

Problemi correlati