Данные не предоставлены. Требуются данные для каждого ключа в

Когда я запускаю следующий код, следующая ошибка прерывает процесс обучения.

ValueError: нет данных для "embedding_15_input". Требуются данные для каждого ключа в: ['embedding_15_input']

Я хотел бы упомянуть, что я хочу построить сеть lstm с выводом multi_lable (11 меток).

Вот функция для создания структуры модели:

def lstm_twiter (n_input, n_out, input_dim, units_activation = 'tanh', batch_size = 20):

 model = Sequential()
 embedding_size_out = min(50, input_dim/2)
 model.add(Embedding( input_length = n_input, output_dim = embedding_size_out\
                     , input_dim = input_dim, mask_zero = True))
 model.add(Bidirectional(LSTM(100,activation=units_activation)))
 model.add(Dropout(0.5))
 model.add(Dense(n_out,activation="sigmoid"))
 callsback = EarlyStopping(patience =2 )
 dict_1={'callbacks':[callsback],'batch_size':batch_size}
 model.compile(optimizer='adam',loss='binary_crossentropy',metrics=['accuracy'])

 return(model, dict_1)

Вот как я это называю:

matrix_input_train, matrix_output_train, matrix_input_dev,\
        matrix_output_dev, matrix_input_test, matrix_output_test,size_of_vocab= \
                                                    preprocessing (txt_file_train, txt_file_dv) 

n_input =  matrix_input_train.shape[1] 
input_dim = size_of_vocab 
n_out =  matrix_output_train.shape[1]
model, dict_1=lstm_twiter(n_input, n_out, input_dim,units_activation = 'tanh'\
                      , batch_size =20  )
dict_1.update(x=matrix_input_train,y=matrix_output_train,epochs=10, \
          validation_data=(matrix_input_dev, matrix_output_dev))
model.fit(dict_1)

_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
embedding_17 (Embedding)     (None, 56, 50)            1103150   
_________________________________________________________________
bidirectional_15 (Bidirectio (None, 200)               120800    
_________________________________________________________________
dropout_15 (Dropout)         (None, 200)               0         
_________________________________________________________________
dense_14 (Dense)             (None, 11)                2211      
=================================================================
Total params: 1,226,161
Trainable params: 1,226,161
Non-trainable params: 0
______________________________________________________

person Mo Abdolhosseini Moghaddam    schedule 29.04.2018    source источник


Ответы (1)


Я столкнулся с этой ошибкой в ​​3 случаях (однако в R, а не в Python):

  1. Входные данные не имеют такого же размера, как было объявлено в первом слое.
  2. Входные данные включали пропущенные значения
  3. Входные данные - это не матрица (например, фрейм данных)

Пожалуйста, проверьте все вышеперечисленное.

Возможно, этот код в R может помочь:

library(keras)

#The network should identify the rule that a row sum greater than 1.5 should yield an output of 1

my_x=matrix(data=runif(30000), nrow=10000, ncol=3)
my_y=ifelse(rowSums(my_x)>1.5,1,0)
my_y=to_categorical(my_y, 2)

model = keras_model_sequential()
layer_dense(model,units = 2000, activation = "relu", input_shape = c(3))
layer_dropout(model,rate = 0.4)
layer_dense(model,units = 50, activation = "relu")
layer_dropout(model,rate = 0.3)
layer_dense(model,units = 2, activation = "softmax")

compile(model,loss = "categorical_crossentropy",optimizer = optimizer_rmsprop(),metrics = c("accuracy"))

history <- fit(model,  my_x, my_y, epochs = 5, batch_size = 128, validation_split = 0.2)

evaluate(model,my_x, my_y,verbose = 0)

predict_classes(model,my_x)
person Roee Anuar    schedule 03.06.2018
comment
Спасибо за замечание ... Формат ввода данных имеет решающее значение для запуска Keras. В моем случае я упустил возможность сделать Xtrain матрицей (на самом деле это был фрейм данных). Итак, as.matrix(Xtrain) решил проблему. - person Peter; 31.10.2018