如何使用 Keras Tuner 调整优化功能?
How can I tune the optimization function with Keras Tuner?
如何使用 Keras Tuner 调整优化功能?我想尝试 SGD、Adam 和 RMSprop。
我试过了:
hp_lr = hp.Choice('learning_rate', values=[1e-2, 1e-3, 1e-4])
hp_optimizer = hp.Choice('optimizer', values=[SGD(learning_rate=hp_lr), RMSprop(learning_rate=hp_lr), Adam(learning_rate=hp_lr)])
model.compile(optimizer=hp_optimizer,
loss="sparse_categorical_crossentropy",
metrics=["accuracy"])
但这不起作用,因为“A Choice
只能包含一种类型的值”
可能最好的方法是这样做:
hp_optimizer = hp.Choice('optimizer', values=['sgd', 'rmsprop', 'adam'])
if hp_optimizer == 'sgd':
optimizer = SGD(learning_rate=hp_lr)
elif hp_optimizer == 'rmsprop':
optimizer = RMSprop(learning_rate=hp_lr)
elif hp_optimzier == 'adam':
optimizer = Adam(learning_rate=hp_lr)
else:
raise
model.compile(optimizer=optimizer,
loss="sparse_categorical_crossentropy",
metrics=["accuracy"])
显然,您需要一个更具描述性的异常(或者干脆保留它,因为无论如何它都不应该发生)。即使不同的优化器是相同的 class,IIRC hp.Choice
也只允许整数、浮点数、布尔值和字符串,所以我看不出这样做的方法。
如何使用 Keras Tuner 调整优化功能?我想尝试 SGD、Adam 和 RMSprop。
我试过了:
hp_lr = hp.Choice('learning_rate', values=[1e-2, 1e-3, 1e-4])
hp_optimizer = hp.Choice('optimizer', values=[SGD(learning_rate=hp_lr), RMSprop(learning_rate=hp_lr), Adam(learning_rate=hp_lr)])
model.compile(optimizer=hp_optimizer,
loss="sparse_categorical_crossentropy",
metrics=["accuracy"])
但这不起作用,因为“A Choice
只能包含一种类型的值”
可能最好的方法是这样做:
hp_optimizer = hp.Choice('optimizer', values=['sgd', 'rmsprop', 'adam'])
if hp_optimizer == 'sgd':
optimizer = SGD(learning_rate=hp_lr)
elif hp_optimizer == 'rmsprop':
optimizer = RMSprop(learning_rate=hp_lr)
elif hp_optimzier == 'adam':
optimizer = Adam(learning_rate=hp_lr)
else:
raise
model.compile(optimizer=optimizer,
loss="sparse_categorical_crossentropy",
metrics=["accuracy"])
显然,您需要一个更具描述性的异常(或者干脆保留它,因为无论如何它都不应该发生)。即使不同的优化器是相同的 class,IIRC hp.Choice
也只允许整数、浮点数、布尔值和字符串,所以我看不出这样做的方法。