Python / Keras / Theano - Índice fora dos limites

votos
2

Eu sou novo para Keras e tendo alguns problemas com formas, especialmente quando se trata de RNNs e LSTMs.

Estou executando este código:

model=Sequential()
model.add(Embedding(input_dim=col,output_dim=70))
model.add(SimpleRNN(init='uniform',output_dim=30))
model.add(Dropout(0.5))
model.add(Dense(1))
model.compile(loss=mse, optimizer=sgd)
model.fit(X=predictor_train, y=target_train, nb_epoch=5, batch_size=1,show_accuracy=True)

Eu estou tendo esse erro:

IndexError: index 143 is out of bounds for size 80
Apply node that caused the error: AdvancedSubtensor1(<TensorType(float32, matrix)>, Flatten{1}.0)
Inputs types: [TensorType(float32, matrix), TensorType(int32, vector)]
Inputs shapes: [(80, 70), (80,)]
Inputs strides: [(280, 4), (4,)]
Inputs values: ['not shown', 'not shown']

Eu não entendo onde é que índice 143 vindo e como faço para corrigir isso.

Qualquer pessoa disponível para iluminar a minha viagem?

informações adicionais abaixo.

- EDIT - Este índice 143 realmente varia toda vez que eu executar o código. Os números não seguem qualquer lógica aparente, a única coisa que pude perceber é que, por coincidência ou não, o menor número que apareceu foi de 80 (eu corri o código mais de 20 vezes)




INFORMAÇÃO EXTRA


Sobre predictor_train (X)

Tipo: 'numpy.ndarray'

forma: (119,80)

dtipo: float64

Sobre target_train (Y)

Tipo: Class 'pandas.core.series.Series'

forma: (119,)

dtipo: float64

Date
2004-10-01    0.003701
2005-05-01    0.001715
2005-06-01    0.002031
2005-07-01    0.002818
...
2015-05-01   -0.007597
2015-06-01   -0.007597
2015-07-01   -0.007597
2015-08-01   -0.007597

model.summary ()

--------------------------------------------------------------------------------
Initial input shape: (None, 80)
--------------------------------------------------------------------------------
Layer (name)                  Output Shape                  Param #             
--------------------------------------------------------------------------------
Embedding (Unnamed)           (None, None, 70)              5600                
SimpleRNN (Unnamed)           (None, 30)                    3030                
Dropout (Unnamed)             (None, 30)                    0                   
Dense (Unnamed)               (None, 1)                     31                  
--------------------------------------------------------------------------------
Total params: 8661
--------------------------------------------------------------------------------

TRACEBACK CHEIA

File /Users/file.py, line 1523, in Pred
model.fit(X=predictor_train, y=target_train, nb_epoch=5, batch_size=1,show_accuracy=True)
File /Library/Python/2.7/site-packages/keras/models.py, line 581, in fit
shuffle=shuffle, metrics=metrics)
File /Library/Python/2.7/site-packages/keras/models.py, line 239, in _fit
outs = f(ins_batch)
File /Library/Python/2.7/site-packages/keras/backend/theano_backend.py, line 365, in __call__
return self.function(*inputs)
File /Library/Python/2.7/site-packages/theano/compile/function_module.py, line 595, in __call__
outputs = self.fn()
File /Library/Python/2.7/site-packages/theano/gof/vm.py, line 233, in __call__
link.raise_with_op(node, thunk)
File /Library/Python/2.7/site-packages/theano/gof/vm.py, line 229, in __call__
thunk()
File /Library/Python/2.7/site-packages/theano/gof/op.py, line 768, in rval
r = p(n, [x[0] for x in i], o)
File /Library/Python/2.7/site-packages/theano/tensor/subtensor.py, line 1657, in perform
out[0] = x.take(i, axis=0, out=o)
IndexError: index 143 is out of bounds for size 80
Apply node that caused the error: AdvancedSubtensor1(<TensorType(float32, matrix)>, Flatten{1}.0)
Inputs types: [TensorType(float32, matrix), TensorType(int32, vector)]
Inputs shapes: [(80, 70), (80,)]
Inputs strides: [(280, 4), (4,)]
Inputs values: ['not shown', 'not shown']


Publicado 01/04/2016 em 17:18
fonte usuário
Em outras línguas...                            


1 respostas

votos
3

O seu Xvariável provavelmente contém o valor 143. A Embeddingcamada irá ser de dimensões 80x70.

Estou assumindo que este é no campo da PNL. Isso significa que você tem um tamanho de vocabulário de 80 palavras cada uma representada por vetores de tamanho 70. Seu Xvariável representa 119 sentenças de comprimento 80 (ou 80 frases de comprimento 119), com o seu conteúdo representam índices para seu vocabulário. Se ele contém um índice de palavra superior a 80 este erro pop-up.

Um valor mais comum para a sua colvariável está acima de 10.000. Claro, isso depende do que você está fazendo.

Respondeu 04/04/2016 em 10:02
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more