Python 如何完全重置Keras?
我将Keras与scikit optimize结合使用,这意味着对于以后的每次迭代,都会创建、训练和测试一个新的Keras模型。在我开始使用GRU(或LSTM)单元的reccurent模型之前,它工作得很好。现在,在第一次迭代(完成时没有问题)之后,我得到以下错误:Python 如何完全重置Keras?,python,tensorflow,keras,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:\...\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()
虽然在使用递归网络之前,我没有使用
reset\u uid()
,而且效果很好,但我只是想看看它是否改善了我的情况,但没有。我不认为这是正常的行为,但我需要一个快速的解决方案,我认为如果有一种方法可以完全重置Keras,它会工作(因为它在第一次迭代中工作,没有问题)。我尝试使用importlib import reload中的,然后使用重新加载(keras)
,但没有改变(尽管我使用从keras import something中单独导入keras模块,所以我不知道这是否会改变)。我找不到完全重置Keras的方法,因此我在这里提出了问题。请发布一些代码:我相当确定您的代码中存在导致错误评估的错误(看起来您使用的是有状态RNN或类似的东西)
K.reset_uids()
K.clear_session()