RuntimeError:生成失败的尝试太多

2024-09-24 22:21:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我想使用Keras tuner来调整模型超参数,使用下面的代码首先创建类来进行优化,如下所示

    model = keras.Sequential()
    model.add(layers.Conv2D(filter=hp.Int('conv_1_filter',min_value=32,max_value=128,step=16),
                                                  kernel_size=hp.Choice('conv_1_kernel',values = [3,5]),
                                                  activation='relu',
                                                  input_shape=(28,28,1)
                                                  ))
    model.add(layers.Conv2D(filter=hp.Int('conv_2_filter',min_value=32,max_value=128,step=16),
                                                  kernel_size=hp.Choice('conv_2_kernel',values = [3,5]),
                                                  activation='relu'))
    model.add(layers.Flatten())
    model.add(layers.Dense(
                                  units=hp.Int('dense_1_units',min_value=32,max_value=128, step=16),
                                  activation='relu'
                              ))
    model.add(layers.Dense(10,activation='softmax'))
    model.compile(
        optimizer=keras.optimizers.Adam(
            hp.Choice('learning_rate',
                      values=[1e-2, 1e-3])),
        loss='sparse_categorical_crossentropy',
        metrics=['accuracy'])
    return model

from kerastuner import RandomSearch
from tensorflow.keras import layers
from kerastuner.engine.hyperparameters import HyperParameters

tuner_search=RandomSearch(build_model,
                          objective='val_accuracy',
                          max_trials=5,
                          executions_per_trial=3,
                          directory='output',project_name='MNIST') 

** 我运行这个类,但是当我尝试使用任何调谐器,如随机搜索、hyperband等时,我得到了以下错误 **

Traceback (most recent call last):
  File "/usr/local/lib/python3.6/dist-packages/kerastuner/engine/hypermodel.py", line 105, in build
    model = self.hypermodel.build(hp)
  File "<ipython-input-37-8db271052e01>", line 6, in build_model
    input_shape=(28,28,1)
TypeError: __init__() missing 1 required positional argument: 'filters'
[Warning] Invalid model 0/5
Traceback (most recent call last):
  File "/usr/local/lib/python3.6/dist-packages/kerastuner/engine/hypermodel.py", line 105, in build
    model = self.hypermodel.build(hp)
  File "<ipython-input-37-8db271052e01>", line 6, in build_model
    input_shape=(28,28,1)
TypeError: __init__() missing 1 required positional argument: 'filters'
[Warning] Invalid model 1/5
Traceback (most recent call last):
  File "/usr/local/lib/python3.6/dist-packages/kerastuner/engine/hypermodel.py", line 105, in build
    model = self.hypermodel.build(hp)
  File "<ipython-input-37-8db271052e01>", line 6, in build_model
    input_shape=(28,28,1)
TypeError: __init__() missing 1 required positional argument: 'filters'
[Warning] Invalid model 2/5
Traceback (most recent call last):
  File "/usr/local/lib/python3.6/dist-packages/kerastuner/engine/hypermodel.py", line 105, in build
    model = self.hypermodel.build(hp)
  File "<ipython-input-37-8db271052e01>", line 6, in build_model
    input_shape=(28,28,1)
TypeError: __init__() missing 1 required positional argument: 'filters'
[Warning] Invalid model 3/5
Traceback (most recent call last):
  File "/usr/local/lib/python3.6/dist-packages/kerastuner/engine/hypermodel.py", line 105, in build
    model = self.hypermodel.build(hp)
  File "<ipython-input-37-8db271052e01>", line 6, in build_model
    input_shape=(28,28,1)
TypeError: __init__() missing 1 required positional argument: 'filters'
[Warning] Invalid model 4/5
Traceback (most recent call last):
  File "/usr/local/lib/python3.6/dist-packages/kerastuner/engine/hypermodel.py", line 105, in build
    model = self.hypermodel.build(hp)
  File "<ipython-input-37-8db271052e01>", line 6, in build_model
    input_shape=(28,28,1)
TypeError: __init__() missing 1 required positional argument: 'filters'
[Warning] Invalid model 5/5
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
/usr/local/lib/python3.6/dist-packages/kerastuner/engine/hypermodel.py in build(self, hp)
    104                 with maybe_distribute(self.distribution_strategy):
--> 105                     model = self.hypermodel.build(hp)
    106             except:

8 frames
TypeError: __init__() missing 1 required positional argument: 'filters'

During handling of the above exception, another exception occurred:

RuntimeError                              Traceback (most recent call last)
/usr/local/lib/python3.6/dist-packages/kerastuner/engine/hypermodel.py in build(self, hp)
    113                 if i == self._max_fail_streak:
    114                     raise RuntimeError(
--> 115                         'Too many failed attempts to build model.')
    116                 continue
    117 

RuntimeError: Too many failed attempts to build model.

** 有人能帮我解决这个问题吗。 **


Tags: inbuildselfmostinputmodellinecall
1条回答
网友
1楼 · 发布于 2024-09-24 22:21:15

所以你已经做了大部分正确的事情,你只是在你的代码中输入了错别字

你必须使用filters并且你已经使用了filter

为了更清楚地说明这一点,应该采用以下方式

model.add(layers.Conv2D(filters=hp.Int('conv_1_filter',min_value=32,max_value=128,step=16),
                                                  kernel_size=hp.Choice('conv_1_kernel',values = [3,5]),
                                                  activation='relu',
                                                  input_shape=(28,28,1)
                                                  ))

改变这一点应该可以解决问题。我希望你的问题得到解决

相关问题 更多 >