我正试图围绕自己的数据集构建一个模型,但该模型无法编译。 它一直给我以下错误: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行,内部版本 引发未实现的错误 未实现错误
在我的例子中,至少问题是在第127行重定向到类
HyperModel
的第77行的函数build
时产生的,在hypermodel.py中引发NotImplementedError。为了解决这个问题,我只需将
ANNhypermodel
类中的模型构建函数重命名为build
。这为我解决了问题
相关问题 更多 >
编程相关推荐