使用 Hparam 仪表板抛出错误的超参数调整
Hyperparameter tuning with Hparam dashboard throwing error
我正在尝试优化我在 keras 中构建的顺序模型的最佳条件。
我最近遇到了 Hparams 仪表板,它看起来是一种非常好的执行此操作的方法。但是,我 运行 在实际 运行 对模型进行参数优化的阶段遇到了问题!
我正在 运行ning 的代码(刚开始时直接从 tf 页面获取)
https://www.tensorflow.org/tensorboard/r2/hyperparameter_tuning_with_hparams
我已将 tf 上的 Hparams 代码修改为我的顺序模型。为了练习的目的,我删除了一个丢失层(因为我的模型中没有)以及优化器。现在我想看看我的模型如何受到层中节点变化的影响。我的代码如下:
HP_NUM_UNITS = hp.HParam('num_units', hp.Discrete([16, 32]))
METRIC_ACCURACY = 'accuracy'
with tf.summary.create_file_writer('logs/hparam_tuning').as_default():
hp.hparams_config(
hparams=[HP_NUM_UNITS],
metrics=[hp.Metric(METRIC_ACCURACY, display_name='Accuracy')],
)
def train_test_model(hparams):
model = tf.keras.models.Sequential([
tf.keras.layers.Dense(hparams[HP_NUM_UNITS], activation=tf.nn.relu),
tf.keras.layers.Dense(24, activation=tf.nn.sigmoid),
])
model.compile(
optimizer='adam',
loss='binary_crossentropy',
metrics=['accuracy'],
)
model.fit(X_train.values, y_train, epochs=50)
_, accuracy = model.evaluate(X_test, y_test)
return accuracy
def run(run_dir, hparams):
with tf.summary.create_file_writer(run_dir).as_default():
hp.hparams(hparams) # record the values used in this trial
accuracy = train_test_model(hparams)
tf.summary.scalar(METRIC_ACCURACY, accuracy, step=1)
到目前为止,一切正常!对于我的第一次尝试,除了删除 dropout 和优化器以及在代码中应用我自己的模型外,我没有做太多改变。我需要比 16 和 32 等更多的单位,但这只是为了制作管道...
当我运行以下代码执行优化时,出现错误。代码是:
session_num = 0
for num_units in HP_NUM_UNITS.domain.values:
hparams = {
HP_NUM_UNITS: num_units,
}
run_name = "run-%d" % session_num
print('--- Starting trial: %s' % run_name)
print({h.name: hparams[h] for h in hparams})
run('logs/hparam_tuning/' + run_name, hparams)
session_num += 1
这会引发错误!错误是(我不太明白):
ValueError: Cannot create an execution function which is comprised of elements from multiple graphs.
此错误发生在第一次尝试模型之后,因为模型适合第一组单位 (16)。如果我查看回溯,我会得到进度报告:
纪元 1/50
140/140 [==============================] - 0s 3ms/样本 - 损失:0.6847 - 精度:0.5723 .. ....
纪元 50/50
140/140 [==============================] - 0s 206us/样本 - 损失:0.2661 - 精度:0.8857
之后是我收到错误消息(无法创建执行函数...等等)
我不确定如何解决这个问题,如有任何帮助,我们将不胜感激!
我非常乐意提供更多 detail/code!
谢谢!
我有同样的错误,我通过将我的训练和测试值从 pandas 数据帧转换为 numpy 数组来修复它。所以只需使用 X_train.values 等等。
如果这只是告诉我错误发生在哪一行。
我正在尝试优化我在 keras 中构建的顺序模型的最佳条件。
我最近遇到了 Hparams 仪表板,它看起来是一种非常好的执行此操作的方法。但是,我 运行 在实际 运行 对模型进行参数优化的阶段遇到了问题!
我正在 运行ning 的代码(刚开始时直接从 tf 页面获取)
https://www.tensorflow.org/tensorboard/r2/hyperparameter_tuning_with_hparams
我已将 tf 上的 Hparams 代码修改为我的顺序模型。为了练习的目的,我删除了一个丢失层(因为我的模型中没有)以及优化器。现在我想看看我的模型如何受到层中节点变化的影响。我的代码如下:
HP_NUM_UNITS = hp.HParam('num_units', hp.Discrete([16, 32]))
METRIC_ACCURACY = 'accuracy'
with tf.summary.create_file_writer('logs/hparam_tuning').as_default():
hp.hparams_config(
hparams=[HP_NUM_UNITS],
metrics=[hp.Metric(METRIC_ACCURACY, display_name='Accuracy')],
)
def train_test_model(hparams):
model = tf.keras.models.Sequential([
tf.keras.layers.Dense(hparams[HP_NUM_UNITS], activation=tf.nn.relu),
tf.keras.layers.Dense(24, activation=tf.nn.sigmoid),
])
model.compile(
optimizer='adam',
loss='binary_crossentropy',
metrics=['accuracy'],
)
model.fit(X_train.values, y_train, epochs=50)
_, accuracy = model.evaluate(X_test, y_test)
return accuracy
def run(run_dir, hparams):
with tf.summary.create_file_writer(run_dir).as_default():
hp.hparams(hparams) # record the values used in this trial
accuracy = train_test_model(hparams)
tf.summary.scalar(METRIC_ACCURACY, accuracy, step=1)
到目前为止,一切正常!对于我的第一次尝试,除了删除 dropout 和优化器以及在代码中应用我自己的模型外,我没有做太多改变。我需要比 16 和 32 等更多的单位,但这只是为了制作管道...
当我运行以下代码执行优化时,出现错误。代码是:
session_num = 0
for num_units in HP_NUM_UNITS.domain.values:
hparams = {
HP_NUM_UNITS: num_units,
}
run_name = "run-%d" % session_num
print('--- Starting trial: %s' % run_name)
print({h.name: hparams[h] for h in hparams})
run('logs/hparam_tuning/' + run_name, hparams)
session_num += 1
这会引发错误!错误是(我不太明白):
ValueError: Cannot create an execution function which is comprised of elements from multiple graphs.
此错误发生在第一次尝试模型之后,因为模型适合第一组单位 (16)。如果我查看回溯,我会得到进度报告:
纪元 1/50 140/140 [==============================] - 0s 3ms/样本 - 损失:0.6847 - 精度:0.5723 .. .... 纪元 50/50 140/140 [==============================] - 0s 206us/样本 - 损失:0.2661 - 精度:0.8857
之后是我收到错误消息(无法创建执行函数...等等)
我不确定如何解决这个问题,如有任何帮助,我们将不胜感激!
我非常乐意提供更多 detail/code!
谢谢!
我有同样的错误,我通过将我的训练和测试值从 pandas 数据帧转换为 numpy 数组来修复它。所以只需使用 X_train.values 等等。
如果这只是告诉我错误发生在哪一行。