Ошибка при проверке ввода: ожидалось, что x будет иметь форму (1800,), но получил массив с формой (1,) - PullRequest
0 голосов
/ 21 апреля 2020

введите описание изображения здесь В настоящее время я работаю над системой интеллектуального управления светом traffi c. Я использую глубокое обучение. Я использую бэкэнд Keras и Tensorflow, кто-нибудь знает, что может быть причиной проблемы, и как я мог ее решить. Буду очень признателен, если кто-нибудь сможет помочь. В ссылке выше есть скриншот ошибки. Вот код для глубокого нейронного net:

 hidden_dimensions = 1024
    x = Input(shape=(self.data_dimension,), name="x")
    h = x
    h = Dense(hidden_dimensions, kernel_regularizer=regularizers.l2(1e-9),
              activity_regularizer=regularizers.l1(1e-9))(h)
    h = Dropout(0.5)(h)
    h = LeakyReLU(0.2)(h)
    h = Dense(math.floor(hidden_dimensions/2), kernel_regularizer=regularizers.l2(1e-9),
              activity_regularizer=regularizers.l1(1e-9))(h)
    h = Dropout(0.5)(h)
    h = LeakyReLU(0.2)(h)
    h = Dense(math.floor(hidden_dimensions/4), kernel_regularizer=regularizers.l2(1e-9),
              activity_regularizer=regularizers.l1(1e-9))(h)
    h = Dropout(0.5)(h)
    h = LeakyReLU(0.2)(h)
    y = Dense(np.prod(self.action_space.shape), kernel_regularizer=regularizers.l2(1e-9),
              activity_regularizer=regularizers.l1(1e-9))(h)
    self.Q = Model(x, y, name="Q")

    action = Input(shape=(1,), dtype = 'float32', name="action")
    """selected_y = merge([y, action], mode=lambda z: k.reshape(z[0][k.arange(k.shape(z[0])[0]), k.reshape(z[1], (-1,))], (-1, 1)),
                       output_shape=lambda z: z[1])"""
    selected_y = concatenate([y, action])

    self.Q_s = Model([x, action], selected_y, name = "Q_s")

    value = Lambda(lambda z: k.max(z, axis=-1, keepdims=True),
                   output_shape=lambda z: (z[0], 1))(y)
    self.V = Model(x, value, name="V")

    x_prime = Input(shape=(self.data_dimension,), name="x_prime")
    done = Input(shape=(1,), name = "done", dtype="float32")
    v_prime = Lambda(lambda z: k.stop_gradient(z), output_shape = lambda z: z)(self.V(x_prime))
    q = self.Q_s([x, action])
    print(k.shape(x))
    r_pred = concatenate([q, v_prime, done])

    k.reshape(x, (1, self.data_dimension))
    k.reshape(x_prime, (1, self.data_dimension))
    print(x.shape)
    print(x_prime.shape)
    self.training_model = Model([x, action, x_prime, done], r_pred, name="training_model")
    self.training_model.compile(self.optimizer, "mean_squared_error")
...