Как восстановить большой агент Tensorforce (18 ГБ) после обучения

#python #tensorflow #reinforcement-learning

#python #tensorflow #подкрепление-обучение

Вопрос:

Я попытался обучить PPOAgent с Tensorforce библиотекой с набором данных около 100 переменных.

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

 {2019-03-16 13:30:04.301893: W tensorflow/core/framework/op_kernel.cc:1401] OP_REQUIRES failed at save_restore_v2_ops.cc:184 : Out of range: Read fewer bytes than requested}
  

Я также пытался обучить и восстановить меньший агент (<1 ГБ) и преуспел, поэтому я думаю, что это не из-за ошибки кодирования.

Моя система должна быть полностью способна запускать модель, и она обучается только с CPU. Это спецификация, показанная ниже:

 Google VM 8 CPU 2GHz
512 GB RAM and hard disk
Windows Server 2016
Tensorflow 1.13.1
Tensorforce 0.4.3
Anaconda Python 3.6.8
  

Будет здорово, если кто-нибудь сможет поделиться идеями по решению этой проблемы и будет высоко оценен.

Мой код выглядит так, как показано ниже:

 def create_network_spec():
network_spec = [
    {"type": "flatten"},
    dict(size= 152, type = 'dense', activation = 'selu', l2_regularization = 0.007920429669304596, 
         l1_regularization = 0.07371959121453227),
    dict(type = 'dropout', rate = 0.12911336420147002),
    dict(size= 228, type = 'dense', activation = 'selu', l2_regularization = 0.007920429669304596, 
         l1_regularization = 0.07371959121453227),
    dict(type = 'dropout', rate = 0.12911336420147002),
    dict(type='internal_lstm', size=456, dropout = 0.12911336420147002),
    dict(type='internal_lstm', size=456, dropout = 0.12911336420147002),
    dict(type='internal_lstm', size=456, dropout = 0.12911336420147002),
]
return network_spec

def create_baseline_spec():
baseline_spec = [
    {
        "type": "lstm",
        "size": 456,
    },
    dict(type='dense', size=228, activation='selu'),
    dict(type = 'dropout', rate = 0.12911336420147002),
    dict(type='dense', size=152, activation='selu'),
    dict(type = 'dropout', rate = 0.12911336420147002),
    dict(type='dense', size=114, activation='selu'),
    dict(type = 'dropout', rate = 0.12911336420147002),
]
return baseline_spec

def testing_agent(environment):

network_spec = create_network_spec()
baseline_spec = create_baseline_spec()
agent = PPOAgent(
    discount=0.9677484438906688,
    states=environment.states,
    actions=environment.actions,
    network=network_spec,
    states_preprocessing=None,
    actions_exploration=None,
    reward_preprocessing=None,
    update_mode=dict(
        unit= 'episodes',
        batch_size= 800,
        frequency=12
    ),
    memory=None, 
    distributions=None,
    entropy_regularization=0.8766700482699176,

    baseline_mode='states',
    baseline=dict(type='custom', network=baseline_spec),
    baseline_optimizer=dict(
        type='multi_step',
        optimizer=dict(
            type='adam',
            learning_rate=0.7342086295731822
        ),
        num_steps=17
    ),
    gae_lambda=0.9285969986276199,
    likelihood_ratio_clipping=0.9837192515975488,
    step_optimizer=dict(
        type='adam',
        learning_rate=0.7342086295731822
    ),
    subsampling_fraction=0.1,
    optimization_steps=17,
    execution=None
)
try :
    agent.restore_model("./model_new/")
except:
    agent.save_model("./model_new/")
return agent