如何完全重置Keras?

时间:2018-04-02 17:00:05

标签: python tensorflow keras

我将Keras与scikit-optimize结合使用,这意味着对于后者的每次迭代,都会创建,训练和测试新的Keras模型。在我开始使用带有GRU(或LSTM)单元的reccurent模型之前,它工作正常。现在在第一次迭代(完成没有问题)之后,我收到以下错误:

  File "C:\...\my_script.py", line 157, in <module>
    n_calls=bayesian_iterations, x0=default_parameters)
  File "C:\ProgramData\Anaconda3\lib\site-packages\skopt\optimizer\gp.py", line 228, in gp_minimize
    callback=callback, n_jobs=n_jobs)
  File "C:\ProgramData\Anaconda3\lib\site-packages\skopt\optimizer\base.py", line 253, in base_minimize
    next_y = func(next_x)
  File "C:\...\my_script.py", line 121, in compute_cost
    model = train_model(args,X_train,y_train,n_epochs=n_epochs)
  File "C:\...\my_script.py", line 96, in train_model
    activation='elu',alpha=alpha,l2_alpha=l2_alpha)
  File "C:\...\my_script.py", line 63, in create_model
    x = GRU(units=n_neurons,activation=activation,return_sequences=True)(x)
  File "C:\ProgramData\Anaconda3\lib\site-packages\keras\layers\recurrent.py", line 499, in __call__
    return super(RNN, self).__call__(inputs, **kwargs)
  File "C:\ProgramData\Anaconda3\lib\site-packages\keras\engine\topology.py", line 619, in __call__
    output = self.call(inputs, **kwargs)
  File "C:\ProgramData\Anaconda3\lib\site-packages\keras\layers\recurrent.py", line 1628, in call
    initial_state=initial_state)
  File "C:\ProgramData\Anaconda3\lib\site-packages\keras\layers\recurrent.py", line 564, in call
    if len(initial_state) != len(self.states):
  File "C:\ProgramData\Anaconda3\lib\site-packages\keras\layers\recurrent.py", line 401, in states
    num_states = len(self.cell.state_size)
TypeError: object of type 'numpy.int32' has no len()

目前我使用:

K.reset_uids()
K.clear_session()

虽然在使用经常性网络之前我没有使用reset_uid()并且它工作正常,但我只是试着看它是否改善了我的情况,但它没有。我不认为这是正常的行为,但我需要一个快速的解决方案,我认为如果有一种方法可以完全重置Keras它会工作(因为它在第一次迭代工作没有问题)。我尝试使用from importlib import reload然后使用reload(keras)但它没有改变(虽然我使用from keras import something分别导入Keras模块,所以我不知道这是否会改变)。我无法找到完全重置Keras的方法,因此我的问题就在这里。

0 个答案:

没有答案