NotImplementedError,RuntimeError:构建模型的失败尝试太多

2024-09-24 22:22:35 发布

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

我正试图围绕自己的数据集构建一个模型,但该模型无法编译。 它一直给我以下错误:NotImplementedError,RuntimeError:构建模型的尝试失败太多

这是我的代码:

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无效 回溯(最近一次呼叫最后一次): 版本中第104行的无效模型1/5文件“C:\Users\Izzy\AppData\Local\Programs\Python38\lib\site packages\kerastuner\engine\hypermodel.py” model=self.hypermodel.build(hp) 文件“C:\Users\Izzy\AppData\Local\Programs\Python\Python38\lib\site packages\kerastuner\engine\hypermodel.py”,第57行,内部版本 引发未实现的错误 未实现错误

回溯(最近一次呼叫最后一次): 无效型号2/5 文件“C:\Users\Izzy\AppData\Local\Programs\Python\38\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行,内部版本 引发未实现的错误 未实现错误 回溯(最近一次呼叫最后一次): 文件“C:\Users\Izzy\AppData\Local\Programs\Python\38\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行,内部版本 引发未实现的错误 未实现错误 无效型号3/5 回溯(最近一次呼叫最后一次): 文件“C:\Users\Izzy\AppData\Local\Programs\Python\38\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行,内部版本 引发未实现的错误 未实现错误 无效型号4/5 回溯(最近一次呼叫最后一次): 文件“C:\Users\Izzy\AppData\Local\Programs\Python\38\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行,内部版本 引发未实现的错误 未实现错误 5/5型回溯无效(最近一次呼叫最后一次): 文件“C:\Users\Izzy\AppData\Local\Programs\Python\38\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行,内部版本 引发未实现的错误 未实现错误


Tags: 文件self版本modellibpackageslocal错误
1条回答
网友
1楼 · 发布于 2024-09-24 22:22:35

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

相关问题 更多 >