ValueError: Ошибка при проверке ввода: ожидалось, что embedding_13_input будет иметь 2 измерения, но получит массив с формой (1, 1, 0) - PullRequest
0 голосов
/ 25 марта 2019

Мой код выглядит так:

lr = 1e-3
window_length = 1
emb_size = 100
look_back = 10

expert_model = Sequential()
expert_model.add(Embedding(num_classes + 1, emb_size, input_length=look_back,mask_zero=True))
expert_model.add(LSTM(64, input_shape=(look_back,window_length)))
expert_model.add(Dense(num_classes, activation='softmax'))

Все, что я хочу, это передать список классов размера 10 слою внедрения, а затем LSTM, чтобы предсказать следующий класс. Возможно, длина этого списка не равна 10, поэтому я присвоил атрибуту mask_zero значение True и словарь слоя внедрения с одним дополнительным значением. Это правильно?

Кроме того, я не очень уверен, что означает window_length. Означает ли это количество последовательностей, которые нужно передать встраиванию? Когда я пытаюсь запустить это, я получаю эту ошибку:

ValueError: Error when checking input: expected embedding_13_input to have 2 dimensions, but got array with shape (1, 1, 0)

Для предварительной обработки данных я использую объект Processor, так как эта модель предназначена для среды OpenAI под названием «RecoGym». Класс выглядит следующим образом:

class RecoProcessor(Processor):
    def process_observation(self, observation):
        if observation is None:
            return np.array([], dtype='float32')
        return np.array(observation, dtype='float32')

    def process_state_batch(self, batch):
        return np.array(batch).astype('float32')

    def process_reward(self, reward):
        return np.array(reward).astype('float32')

    def process_demo_data(self, demo_data):
        for step in demo_data:
            step[0] = self.process_observation(step[0])
            step[2] = self.process_reward(step[2])
        return demo_data

Пожалуйста, мне нужна помощь. Если бы вы только могли дать мне учебник по этому вопросу, я был бы очень признателен.

...