Python RuntimeError:生成失败的尝试太多

Python RuntimeError:生成失败的尝试太多,python,tensorflow,keras,cnn,keras-tuner,Python,Tensorflow,Keras,Cnn,Keras Tuner,我想使用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

我想使用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等时,我得到了以下错误 **

回溯(最近一次呼叫最后一次):
文件“/usr/local/lib/python3.6/dist-packages/kerastuner/engine/hypermodel.py”,第105行,内部版本
model=self.hypermodel.build(hp)
文件“”,第6行,内置模型
输入_形状=(28,28,1)
TypeError:\uuuu init\uuuu()缺少1个必需的位置参数:“筛选器”
[警告]模型0/5无效
回溯(最近一次呼叫最后一次):
文件“/usr/local/lib/python3.6/dist-packages/kerastuner/engine/hypermodel.py”,第105行,内部版本
model=self.hypermodel.build(hp)
文件“”,第6行,内置模型
输入_形状=(28,28,1)
TypeError:\uuuu init\uuuu()缺少1个必需的位置参数:“筛选器”
[警告]型号1/5无效
回溯(最近一次呼叫最后一次):
文件“/usr/local/lib/python3.6/dist-packages/kerastuner/engine/hypermodel.py”,第105行,内部版本
model=self.hypermodel.build(hp)
文件“”,第6行,内置模型
输入_形状=(28,28,1)
TypeError:\uuuu init\uuuu()缺少1个必需的位置参数:“筛选器”
[警告]型号2/5无效
回溯(最近一次呼叫最后一次):
文件“/usr/local/lib/python3.6/dist-packages/kerastuner/engine/hypermodel.py”,第105行,内部版本
model=self.hypermodel.build(hp)
文件“”,第6行,内置模型
输入_形状=(28,28,1)
TypeError:\uuuu init\uuuu()缺少1个必需的位置参数:“筛选器”
[警告]型号3/5无效
回溯(最近一次呼叫最后一次):
文件“/usr/local/lib/python3.6/dist-packages/kerastuner/engine/hypermodel.py”,第105行,内部版本
model=self.hypermodel.build(hp)
文件“”,第6行,内置模型
输入_形状=(28,28,1)
TypeError:\uuuu init\uuuu()缺少1个必需的位置参数:“筛选器”
[警告]型号4/5无效
回溯(最近一次呼叫最后一次):
文件“/usr/local/lib/python3.6/dist-packages/kerastuner/engine/hypermodel.py”,第105行,内部版本
model=self.hypermodel.build(hp)
文件“”,第6行,内置模型
输入_形状=(28,28,1)
TypeError:\uuuu init\uuuu()缺少1个必需的位置参数:“筛选器”
[警告]型号5/5无效
---------------------------------------------------------------------------
TypeError回溯(最近一次调用上次)
/usr/local/lib/python3.6/dist-packages/kerastuner/engine/hypermodel.py内置(self,hp)
104有可能分配(自我分配策略):
-->105 model=self.hypermodel.build(hp)
106除:
8帧
TypeError:\uuuu init\uuuu()缺少1个必需的位置参数:“筛选器”
在处理上述异常期间,发生了另一个异常:
运行时错误回溯(上次最近调用)
/usr/local/lib/python3.6/dist-packages/kerastuner/engine/hypermodel.py内置(self,hp)
113如果i==self.\u max\u fail\u strike:
114 raise运行时错误(
-->115“构建模型的失败尝试太多。”)
116继续
117
RuntimeError:构建模型的失败尝试太多。
** 有人能帮我解决这个问题吗。
**

因此,您已经完成了大部分正确的操作,只是在代码中输入了打字错误

您必须使用
过滤器
,并且您已经使用了
过滤器

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

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)
                                                  ))

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

请发布更多代码。什么是
build\u model
?假设导入上方的代码构建了build\u model,则在
conv2D
调用中缺少
filters
参数。
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)
                                                  ))