Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 在Tensorflow 2中使用Keras调谐器时,我遇到了一个错误:被零除_Python 3.x_Tensorflow2.0_Keras 2_Keras Tuner - Fatal编程技术网

Python 3.x 在Tensorflow 2中使用Keras调谐器时,我遇到了一个错误:被零除

Python 3.x 在Tensorflow 2中使用Keras调谐器时,我遇到了一个错误:被零除,python-3.x,tensorflow2.0,keras-2,keras-tuner,Python 3.x,Tensorflow2.0,Keras 2,Keras Tuner,我正在试验kerastuner 以下是我的代码和一个可复制的示例: import kerastuner as kt from kerastuner.tuners.bayesian import BayesianOptimization (x_train, y_train), (x_test, y_test) = tf.keras.datasets.boston_housing.load_data( path="boston_housing.npz", test_split=0.2,

我正在试验kerastuner

以下是我的代码和一个可复制的示例:

import kerastuner as kt

from kerastuner.tuners.bayesian import BayesianOptimization

(x_train, y_train), (x_test, y_test) = tf.keras.datasets.boston_housing.load_data(
    path="boston_housing.npz", test_split=0.2, seed=113
)

params = {}
params['shape'] = x_train[0].shape

def build_model(hp):



    number_of_layers = hp.Choice('number_of_layers', values = [2, 3], default = 2)

    if number_of_layers == 2:

        nodes2 = hp.Int('nodes2', 64, 524 , 64, default = 64)
        nodes3 = hp.Int('nodes3', 32, np.min([nodes2//2, 128]) , 32, default = 32)   
        nodes_list = [nodes2, nodes3]

        dropout2 = hp.Float('dropout2', 0., 0.2, 0.05, default = 0.)
        dropout3 = hp.Float('dropout3', 0.2, 0.5, 0.05, default = 0.5)

        dropouts_list = [dropout2, dropout3]

    else:

        nodes1 = hp.Int('nodes1', 128, 1024, 128, default = 128)
        nodes2 = hp.Int('nodes2', 64, np.min([nodes1//2, 524]) , 64, default = 64)
        nodes3 = hp.Int('nodes3', 32, np.min([nodes2//2, 128]) , 32, default = 32)

        nodes_list = [nodes1, nodes2, nodes3]

        dropout1 = hp.Float('dropout1', 0., 0.2, 0.05, default = 0.)
        dropout2 = hp.Float('dropout2', 0., 0.2, 0.05, default = 0.)
        dropout3 = hp.Float('dropout3', 0.2, 0.5, 0.05, default = 0.5)

        dropouts_list = [dropout1, dropout2, dropout3]

    inputs = Input(shape = params['shape'])

    x = inputs

    for i in range(len(nodes_list)):

        nodes = nodes_list[i]

        dropout = dropouts_list[i]

        x = Dense(nodes, activation = 'relu')(x)

        x = Dropout(dropout)(x)

    prediction = Dense(1)(x)

    model = Model(inputs, prediction)

    model.compile(

        optimizer = tf.keras.optimizers.Adam(hp.Float('learning_rate', 1e-4, 1e-2, sampling = 'log')),

        loss = 'mse'


    )

    return(model)

tuner = BayesianOptimization(
    build_model,
    objective='val_loss',

    max_trials = 100)

tuner.search(x_train, y_train, validation_split = 0.2, callbacks = [tf.keras.callbacks.EarlyStopping(patience = 10)] )

INFO:tensorflow:Reloading Oracle from existing project .\untitled_project\oracle.json
INFO:tensorflow:Reloading Tuner from .\untitled_project\tuner0.json
---------------------------------------------------------------------------
ZeroDivisionError                         Traceback (most recent call last)
<ipython-input-120-3bfac2133c4d> in <module>
     68     max_trials = 100)
     69 
---> 70 tuner.search(x_train, y_train, validation_split = 0.2, callbacks = [tf.keras.callbacks.EarlyStopping(patience = 10)] )

~\Anaconda3\envs\tf2\lib\site-packages\kerastuner\engine\base_tuner.py in search(self, *fit_args, **fit_kwargs)
    118         self.on_search_begin()
    119         while True:
--> 120             trial = self.oracle.create_trial(self.tuner_id)
    121             if trial.status == trial_module.TrialStatus.STOPPED:
    122                 # Oracle triggered exit.

~\Anaconda3\envs\tf2\lib\site-packages\kerastuner\engine\oracle.py in create_trial(self, tuner_id)
    147             values = None
    148         else:
--> 149             response = self._populate_space(trial_id)
    150             status = response['status']
    151             values = response['values'] if 'values' in response else None

~\Anaconda3\envs\tf2\lib\site-packages\kerastuner\tuners\bayesian.py in _populate_space(self, trial_id)
     99 
    100         # Fit a GPR to the completed trials and return the predicted optimum values.
--> 101         x, y = self._vectorize_trials()
    102         try:
    103             self.gpr.fit(x, y)

~\Anaconda3\envs\tf2\lib\site-packages\kerastuner\tuners\bayesian.py in _vectorize_trials(self)
    204 
    205                 # Embed an HP value into the continuous space [0, 1].
--> 206                 prob = hp_module.value_to_cumulative_prob(trial_value, hp)
    207                 vector.append(prob)
    208 

~\Anaconda3\envs\tf2\lib\site-packages\kerastuner\engine\hyperparameters.py in value_to_cumulative_prob(value, hp)
   1044         sampling = hp.sampling or 'linear'
   1045         if sampling == 'linear':
-> 1046             return (value - hp.min_value) / (hp.max_value - hp.min_value)
   1047         elif sampling == 'log':
   1048             return (math.log(value / hp.min_value) /

ZeroDivisionError: division by zero
将kerastuner作为kt导入
从kerastuner.tuners.bayesian导入贝叶斯优化
(x_列,y_列),(x_测试,y_测试)=tf.keras.datasets.boston_housing.load_数据(
path=“boston_housing.npz”,测试分割=0.2,种子=113
)
参数={}
参数['shape']=x_列[0]。形状
def build_型号(hp):
层数=hp.Choice('number\u of \u layers',值=[2,3],默认值=2)
如果层的数量=2:
nodes2=hp.Int('nodes2',64,524,64,默认值=64)
nodes3=hp.Int('nodes3',32,np.min([nodes2//2,128]),32,默认值=32)
节点列表=[nodes2,nodes3]
dropout2=hp.Float('dropout2',0,0.2,0.05,默认值=0。)
dropout3=hp.Float('dropout3',0.2,0.5,0.05,默认值=0.5)
辍学者名单=[辍学者2,辍学者3]
其他:
nodes1=hp.Int('nodes1',128,1024,128,默认值=128)
nodes2=hp.Int('nodes2',64,np.min([nodes1//2524]),64,默认值=64)
nodes3=hp.Int('nodes3',32,np.min([nodes2//2,128]),32,默认值=32)
节点列表=[节点1、节点2、节点3]
dropout1=hp.Float('dropout1',0,0.2,0.05,默认值=0。)
dropout2=hp.Float('dropout2',0,0.2,0.05,默认值=0。)
dropout3=hp.Float('dropout3',0.2,0.5,0.05,默认值=0.5)
辍学者名单=[辍学者1,辍学者2,辍学者3]
输入=输入(形状=参数['shape'])
x=输入
对于范围内的i(len(节点列表)):
节点=节点\u列表[i]
辍学=辍学者名单[i]
x=密集(节点,激活='relu')(x)
x=辍学(辍学)(x)
预测=密集(1)(x)
模型=模型(输入、预测)
model.compile(
optimizer=tf.keras.optimizers.Adam(hp.Float('learning_rate',1e-4,1e-2,sampling='log'),
损失='mse'
)
退货(型号)
调谐器=贝叶斯优化(
建立"大学模型",,
目标='价值损失',
最大试验次数(100次)
tuner.search(x\u train,y\u train,validation\u split=0.2,callbacks=[tf.keras.callbacks.earlystoping(patience=10)])
信息:tensorflow:正在从现有项目重新加载Oracle。\n未命名\u project\Oracle.json
信息:tensorflow:正在从重新加载调谐器。\n未命名\u项目\tuner0.json
---------------------------------------------------------------------------
ZeroDivisionError回溯(最近一次呼叫上次)
在里面
68(最大试验次数=100次)
69
--->70调谐器搜索(x_序列,y_序列,验证分割=0.2,回调=[tf.keras.callbacks.earlystoping(耐心=10)])
搜索中的~\Anaconda3\envs\tf2\lib\site packages\kerastuner\engine\base\u tuner.py(self、*fit\u args、**fit\u kwargs)
118 self.on_search_begin()
119虽然正确:
-->120试用版=self.oracle.create\u试用版(self.tuner\u id)
121如果trial.status==trial\u模块TrialStatus.STOPPED:
122#Oracle触发退出。
~\Anaconda3\envs\tf2\lib\site packages\kerastuner\engine\oracle.py在create\u试用版中(self,tuner\u id)
147个值=无
148.其他:
-->149响应=自我。填充空间(试验id)
150状态=响应[“状态”]
151 values=响应['values']如果响应中的'values',否则无
~\Anaconda3\envs\tf2\lib\site packages\kerastuner\tuners\bayesian.py在填充空间中(self,试用id)
99
100#将探地雷达与完成的试验相匹配,并返回预测的最佳值。
-->101 x,y=self.\u矢量化\u试验()
102尝试:
103自探地雷达拟合(x,y)
~\Anaconda3\envs\tf2\lib\site packages\kerastuner\tuners\bayesian.py in\u vectorize\u试验(self)
204
205#将HP值嵌入连续空间[0,1]。
-->206概率=hp模块值到累积概率(试验值,hp)
207向量追加(prob)
208
~\Anaconda3\envs\tf2\lib\site packages\kerastuner\engine\hyperparameters.py中的值\u到\u累计\u prob(值,hp)
1044采样=马力采样或“线性”
1045如果采样=‘线性’:
->1046返回值(值-hp.min\u值)/(hp.max\u值-hp.min\u值)
1047 elif采样=='log':
1048返回(数学日志(值/hp.min_值)/
ZeroDivision错误:被零除

可能的原因(由于上面粘贴的代码可读性较低)可能是使用不同的数据集保存模型。我建议您在
BayesianOptimization
构造代码块中添加
overwrite=True
。如果有帮助,请告诉我。

检查“步骤”或“默认值”在hp中,参数不应为零。乍一看,您似乎没有提供堆栈跟踪。在此基础上,您可能希望将代码/错误拆分为可读性。