Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.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
Keras调谐器仅运行两个时代_Keras_Keras Tuner - Fatal编程技术网

Keras调谐器仅运行两个时代

Keras调谐器仅运行两个时代,keras,keras-tuner,Keras,Keras Tuner,下面的代码与kera tuner网站上的Hello World示例相同,但使用了Hyperband而不是RandomSearch 来自tensorflow导入keras的 从tensorflow.keras导入图层 从kerastuner.tuner导入随机搜索,然后 从kerastuner.engine.hypermodel导入超模型 从kerastuner.engine.hyperparameters导入超参数 (x,y),(val_x,val_y)=keras.dataset.mnist.

下面的代码与kera tuner网站上的Hello World示例相同,但使用了Hyperband而不是RandomSearch

来自tensorflow导入keras的

从tensorflow.keras导入图层
从kerastuner.tuner导入随机搜索,然后
从kerastuner.engine.hypermodel导入超模型
从kerastuner.engine.hyperparameters导入超参数
(x,y),(val_x,val_y)=keras.dataset.mnist.load_data()
x=x.aType('float32')/255。
val_x=val_x.astype('float32')/255。
x=x[:10000]
y=y[:10000]
def build_型号(hp):
模型=keras.Sequential()
model.add(layers.Flatten(input_shape=(28,28)))
对于范围内的i(hp.Int('num_layers',2,20)):
model.add(layers.density(units=hp.Int('units_'+str(i)),32,512,32),
激活(='relu'))
model.add(layers.Dense(10,activation='softmax'))
model.compile(
优化器=keras.optimizers.Adam(
hp.选择(“学习率”[1e-2、1e-3、1e-4]),
损失=“稀疏”\u分类”\u交叉熵',
指标=[‘准确度’])
回归模型
调谐器=双频(
建立"大学模型",,
最大纪元=50,
目标='val_准确性',
种子=20,
每次审判的执行次数=1,
目录='test\u dir',
项目名称='daninhas\u hyperband'
)    
#tuner.search\u space\u summary()
调谐器搜索(x=x,
y=y,
纪元=50,
验证数据=(值x,值y))
tuner.results_summary()
但即使有
max_epochs=50
epoch=50
模型训练也只运行了两个时期

(...)
2020-06-03 12:55:23.245993: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1102] Device interconnect StreamExecutor with strength 1 edge matrix:
2020-06-03 12:55:23.246022: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1108]      
Epoch 1/2
313/313 [==============================] - 4s 12ms/step - loss: 2.3247 - accuracy: 0.1109 - val_loss: 2.3025 - val_accuracy: 0.1135
Epoch 2/2
313/313 [==============================] - 3s 9ms/step - loss: 2.3020 - accuracy: 0.1081 - val_loss: 2.3033 - val_accuracy: 0.1135
[Trial complete]
[Trial summary]
 |-Trial ID: 32396974f43cade5b6c3ef511b5548f3
 |-Score: 0.11349999904632568
 |-Best step: 0
 > Hyperparameters:
 |-learning_rate: 0.01
 |-num_layers: 19
 |-tuner/bracket: 3
 |-tuner/epochs: 2
 |-tuner/initial_epoch: 0
 |-tuner/round: 0
 |-units_0: 448
 |-units_1: 384
 |-units_10: 416
 |-units_11: 160
 |-units_12: 384
 |-units_13: 480
 |-units_14: 288
 |-units_15: 64
 |-units_16: 288
 |-units_17: 64
 |-units_18: 32
 |-units_2: 96
 |-units_3: 160
 |-units_4: 480
 |-units_5: 416
 |-units_6: 256
 |-units_7: 32
 |-units_8: 160
 |-units_9: 448
Epoch 1/2
313/313 [==============================] - 4s 11ms/step - loss: 2.3109 - accuracy: 0.1081 - val_loss: 2.3028 - val_accuracy: 0.1135
Epoch 2/2
313/313 [==============================] - 3s 10ms/step - loss: 2.3022 - accuracy: 0.1067 - val_loss: 2.3019 - val_accuracy: 0.1135
[Trial complete]
[Trial summary]
 |-Trial ID: 98376f698826a2068c3412301a7aece4
 |-Score: 0.11349999904632568
 |-Best step: 0
 > Hyperparameters:
 |-learning_rate: 0.01
 |-num_layers: 19
 |-tuner/bracket: 3
 |-tuner/epochs: 2
 |-tuner/initial_epoch: 0
 |-tuner/round: 0
 |-units_0: 480
 |-units_1: 320
 |-units_10: 320
 |-units_11: 64
 |-units_12: 128
 |-units_13: 32
 |-units_14: 416
 |-units_15: 288
 |-units_16: 320
 |-units_17: 480
 |-units_18: 256
 |-units_2: 480
 |-units_3: 320
 |-units_4: 288
 |-units_5: 192
 |-units_6: 224
 |-units_7: 256
 |-units_8: 256
 |-units_9: 352
(...)
是否存在只强制2个时代的配置? 或者这可能是某种错误? 还是我遗漏了什么


如何使模型训练适应更多时代?

这就是Hyperband算法的工作原理。它首先使用有限的历元对超参数空间进行采样,以了解该空间,然后迭代更多的历元,以获得更有前途的模型。使用一个小的测试数据集,让它运行一段时间,看看它的运行情况。@Joe是两个时代之后的曲面,应该与N=50(或更多…)个时代之后的曲面有任何关系。@jtlz2是的,这是Hyperband的一个关键假设。如果正在优化的模型的行为方式是,几个时期后的结果与多个时期后的结果不相关,那么最好使用类似于贝叶斯超参数算法的方法,该算法在做出决策之前将每个测试模型运行整个时期。非常好,谢谢提示!否则,您也可以尝试更改默认值和_iterations=1参数,以使结果更稳定。或者,keras tuner现在有BayesianOptimization类,但我从未检查过这个。