#python #json #tensorflow #configuration #yaml
Вопрос:
Я не возражаю, если это YAML, JSON,. ini или что-то еще.
Пользователь должен иметь возможность изменять reduction
значение при вызове tf.keras.losses.Функция CategoricalHinge с помощью файла конфигурации, как показано ниже:
import tensorflow as tf
# config file reading happens here (expected scenario):
f = read_the_config_file()
reduction = f["reduction"] # retrieved the reduction value
# pass `reduction` to the loss function:
loss = tf.keras.losses(reduction)
reduction
может быть либо tf.keras.losses.Reduction.NONE
или tf.keras.losses.Reduction.AUTO
. Эти значения являются объектами tensorflow.
Пример файла JSON, который я ожидал бы, будет похож на:
{
"reduction ": tf.keras.losses.Reduction.NONE
}
Но очевидно, что это недопустимый файл JSON.
Вопрос:
Существуют ли способы разрешить пользователю передавать такой параметр в файле конфигурации? Если нет, то каковы другие способы получения такого пользовательского ввода без сохранения сопоставления строки с объектом в пользовательском коде?
Ответ №1:
Я не очень хорошо знаком с Python, но я предполагаю, что вы можете реализовать read_the_config_file()
функцию не только (1) считывания содержимого файла конфигурации в словарь, но и замены некоторых строковых значений значениями объектов для нескольких специальных записей в словаре, таких как reduction
в вашем примере. По крайней мере, таким образом код сопоставления строк с объектами инкапсулируется внутри read_the_contents_file()
, а не распространяется в остальной части пользовательского кода.