Есть ли способ получить объект класса Model
из keras
, который выбирает класс случайным образом. Каждый раз по-настоящему случайным образом, а не только блокировка обучения и оценки с весами инициализации сети.
Мне нужно передать Model
в библиотеку keras-rl
, чтобы создать случайного агента, чтобы проверить, улучшается я или нет.
Определение моей модели:
inp = Input(shape=(1,)+(1, ))
out = Lambda(lambda x: tf.random_uniform((1000,)), output_shape=(1000,), trainable=False) (inp)
model = Model(inputs=inp, outputs=out)
model.compile(loss=huber_loss, optimizer=Adam(lr=lr))
print(model.summary())
# memory
memory = PrioritizedMemory(limit=500000, alpha=.6, start_beta=.4, end_beta=.4, window_length=1)
# policy
policy = LinearAnnealedPolicy(EpsGreedyQPolicy(), attr='eps',
value_max=1., value_min=.1, value_test=.05,
nb_steps=10000)
agent = DQNAgent(model=model, nb_actions=env.action_space.n, memory=memory, nb_steps_warmup=10,enable_double_dqn=False, enable_dueling_network=True,
gamma=.999,target_model_update=1e-2, policy=policy)
agent.compile(optimizer=Adam(lr=lr))
Но это дает мне следующее исключение:
ValueError: Dimensions must be equal, but are 1001 and 0 for 'lambda_9/add' (op: 'Add') with input shapes: [?,1001,1], [?,0,1001].