代码之家  ›  专栏  ›  技术社区  ›  Axe Per

具有tensorflow的Keras抛出ResourceExhaustedError

  •  0
  • Axe Per  · 技术社区  · 8 年前

    1) 如果历元是偶数,则使用反向传播更改神经网络的权重

    2) 如果历元为奇数,则仅使用 update_weights_with_custom_function() 因此,冻结网络。

    下面是实现此功能的代码的简化部分(请注意 epochs=1 ):

    for epoch in range(nb_epoch):
    
        if epoch % 2 == 0:
            model.trainable = True    # Unfreeze the model
        else:
            model.trainable = False   # Freeze the model
        model.compile(optimizer=optim, loss=gaussian_loss, metrics=['accuracy'])
    
        hist = model.fit(X_train, Y_train, 
                 batch_size=batch_size,
                 epochs=1,
                 shuffle=True,
                 verbose=1,
                 callbacks=[tbCallBack, csv_epochs, early_stop],
                 validation_data=(X_val, Y_val))
    
        if epoch % 2 == 1:
            update_weights_with_custom_function()
    

    问题: 几年后,凯拉斯抛出了一个 ResourceExhaustedError 但只有tensorflow, 没有theano . 似乎是循环 compile() 正在创建模型而不发布它们。

    因此,我应该怎么做?我知道 K.clear_session() see )这给了我一些问题 load_model() 在我的情况下,这不是现成的。

    我也愿意采用其他方法来实现我试图实现的目标(即根据历元的奇偶性冻结神经网络模型)。

    tensorflow后端的keras正在抛出一个 ResourceExhausterRor 因为我在绕圈子 编译() .

    1 回复  |  直到 8 年前
        1
  •  0
  •   Axe Per    8 年前

    正如Marcin Moejko指出的,使用 eval()

    我添加了一个自定义回调(灵感来自 here ),从而避免了循环 compile()

    即使没有直接解决张量流问题,问题现在也解决了。

    推荐文章