【问题标题】:NotImplementedError, RuntimeError: Too many failed attempts to build modelNotImplementedError、RuntimeError:构建模型的尝试失败次数过多
【发布时间】:2020-12-09 11:49:52
【问题描述】:

我正在尝试围绕我自己的数据集构建模型,但该模型无法编译。 它不断给我以下错误:NotImplementedError, RuntimeError: Too many failed trying to build model.

这是我的代码:

import tensorflow
import pandas as pd

# import HPT requirements
from kerastuner import HyperModel
#import keras
from tensorflow.keras.layers import (
    Dense,
    Dropout,
    #Flatten,
)

# load data
ds = pd.read_csv("datasets/ds1.csv")

# preprocessing data
jaartallen = ds.pop("jaartallen")
y = ds.pop("inkomstenbelasting")
y_train = y.drop(index=[6, 15, 19, 23], axis=0)
y_test = y.loc[[6, 15, 19, 23]]

x_train = ds.drop(index=[6, 15, 19, 23], axis=0)
x_test = ds.loc[[6, 15, 19, 23]]

print(x_train.shape)

# ANN model
class ANNHyperModel(HyperModel):
    def __init__(self, input_shape, num_classes, layers):
        self.input_shape = input_shape
        self.num_classes = num_classes
        self.layers = layers

    def buildModel(self, hp):
        model = keras.Sequential()

        # add first layer
        model.add(Dense(
                    units=6, 
                    input_shape=self.input_shape,
                    activation='relu'))

        # add middle layers
        for i in range(layers):
            model.add(
                Dense(
                    units=hp.Int(
                        'units',
                        min_value=1,
                        max_value=10,
                        step=5,
                        default=30
                    ),
                    activation=hp.Choice(
                        'dense_activation',
                        values=['relu', 'tanh', 'sigmoid'],
                        default='relu'
                    )
                )
            )

            model.add(
                Dropout(
                rate=hp.Float(
                    'dropout',
                    min_value=0.0,
                    max_value=0.5,
                    default=0.25,
                    step=0.05
                    )
                )
            )

        # add output layer
        model.add(
            Dense(self.num_classes, activation='softmax'))

        # compile model
        model.compile(
            optimizer=keras.optimizers.Adam(
                hp.float(
                    'learning_rate',
                    min_value=2E-2,
                    max_value=4E-2,
                    sampling='LOG',
                    default=3E-2),
            loss=['sparse_categorical_crossentropy'],
            metrcis=['accuracy']))

        return model

NUM_CLASSES = 65000
INPUT_SHAPE = x_train.shape
LAYERS = 5

hypermodel = ANNHyperModel(num_classes=NUM_CLASSES, input_shape=INPUT_SHAPE, layers=LAYERS)

from kerastuner.tuners import RandomSearch

MAX_TRIALS = 20
EXECUTION_PER_TRIAL = 2

tuner = RandomSearch(
    hypermodel,
    objective='val_accuracy',
    seed=1,
    max_trials=MAX_TRIALS,
    executions_per_trial=EXECUTION_PER_TRIAL,
    directory='random_search',
    project_name='inkomstenbelasting'
)

所以我尝试更改输入形状,但它似乎与我的数据集没有任何关系。 我是超参数调优的新手,所以在编写模型时可能犯了一个愚蠢的小错误,但我找不到。

编辑: 这是整个第一个错误:

无效模型 0/5 回溯(最近一次通话最后): 无效的模型 1/5 文件“C:\Users\Izzy\AppData\Local\Programs\Python\Python38\lib\site-packages\kerastuner\engine\hypermodel.py”,第 104 行,在构建中 模型 = self.hypermodel.build(hp) 文件“C:\Users\Izzy\AppData\Local\Programs\Python\Python38\lib\site-packages\kerastuner\engine\hypermodel.py”,第 57 行,在构建中 引发 NotImplementedError 未实现错误

Traceback(最近一次调用最后一次): 无效模型 2/5 文件“C:\Users\Izzy\AppData\Local\Programs\Python\Python38\lib\site-packages\kerastuner\engine\hypermodel.py”,第 104 行,在构建中 模型 = self.hypermodel.build(hp) 文件“C:\Users\Izzy\AppData\Local\Programs\Python\Python38\lib\site-packages\kerastuner\engine\hypermodel.py”,第 57 行,在构建中 引发 NotImplementedError 未实现错误 回溯(最近一次通话最后): 文件“C:\Users\Izzy\AppData\Local\Programs\Python\Python38\lib\site-packages\kerastuner\engine\hypermodel.py”,第 104 行,在构建中 模型 = self.hypermodel.build(hp) 文件“C:\Users\Izzy\AppData\Local\Programs\Python\Python38\lib\site-packages\kerastuner\engine\hypermodel.py”,第 57 行,在构建中 引发 NotImplementedError 未实现错误 无效模型 3/5 回溯(最近一次通话最后): 文件“C:\Users\Izzy\AppData\Local\Programs\Python\Python38\lib\site-packages\kerastuner\engine\hypermodel.py”,第 104 行,在构建中 模型 = self.hypermodel.build(hp) 文件“C:\Users\Izzy\AppData\Local\Programs\Python\Python38\lib\site-packages\kerastuner\engine\hypermodel.py”,第 57 行,在构建中 引发 NotImplementedError 未实现错误 无效模型 4/5 回溯(最近一次通话最后): 文件“C:\Users\Izzy\AppData\Local\Programs\Python\Python38\lib\site-packages\kerastuner\engine\hypermodel.py”,第 104 行,在构建中 模型 = self.hypermodel.build(hp) 文件“C:\Users\Izzy\AppData\Local\Programs\Python\Python38\lib\site-packages\kerastuner\engine\hypermodel.py”,第 57 行,在构建中 引发 NotImplementedError 未实现错误 无效的模型 5/5Traceback(最近一次调用最后一次): 文件“C:\Users\Izzy\AppData\Local\Programs\Python\Python38\lib\site-packages\kerastuner\engine\hypermodel.py”,第 104 行,在构建中

model = self.hypermodel.build(hp)

文件“C:\Users\Izzy\AppData\Local\Programs\Python\Python38\lib\site-packages\kerastuner\engine\hypermodel.py”,第 57 行,在构建中 引发 NotImplementedError 未实现错误

【问题讨论】:

  • 您没有包含未实现的内容,您一定是忘记实现某些内容,并且它必须显示在该错误中。
  • @faheem 我刚刚编辑了我的帖子以包含整个第一个错误。它似乎没有说缺少什么

标签: python tensorflow keras model


【解决方案1】:

在我的情况下,至少问题是在第 127 行重定向到 HyperModel 类的第 77 行的函数 HyperModel 在 hypermodel.py 中引发 NotImplementedError。
为了解决这个问题,我只需将 ANNhypermodel 类中的模型构建函数重命名为 build
这为我解决了这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-16
    • 1970-01-01
    • 2021-09-25
    • 2014-04-27
    • 1970-01-01
    • 2020-02-02
    • 2012-02-20
    • 1970-01-01
    相关资源
    最近更新 更多