Я использую API обнаружения объектов tenorflow и хочу иметь возможность динамически редактировать файл конфигурации в python, который выглядит следующим образом. Я думал об использовании библиотеки буферов протокола в Python, но я не уверен, что делать дальше.
model {
ssd {
num_classes: 1
image_resizer {
fixed_shape_resizer {
height: 300
width: 300
}
}
feature_extractor {
type: "ssd_inception_v2"
depth_multiplier: 1.0
min_depth: 16
conv_hyperparams {
regularizer {
l2_regularizer {
weight: 3.99999989895e-05
}
}
initializer {
truncated_normal_initializer {
mean: 0.0
stddev: 0.0299999993294
}
}
activation: RELU_6
batch_norm {
decay: 0.999700009823
center: true
scale: true
epsilon: 0.0010000000475
train: true
}
}
...
...
}
Есть ли простой / легкий способ изменить конкретные значения для таких полей, как высота, в image_resizer -> fixed_shape_resizer, скажем, от 300 до 500? И записать обратно файл с измененными значениями, ничего не меняя?
EDIT:
Хотя ответ, предоставленный @DmytroPrylipko, работал для большинства параметров в конфигурации, я сталкиваюсь с некоторыми проблемами с «составным полем» ..
То есть, если у нас есть такая конфигурация:
train_input_reader: {
label_map_path: "/tensorflow/data/label_map.pbtxt"
tf_record_input_reader {
input_path: "/tensorflow/models/data/train.record"
}
}
И я добавляю эту строку для редактирования input_path:
pipeline_config.train_input_reader.tf_record_input_reader.input_path = "/tensorflow/models/data/train100.record"
Выдает ошибку:
TypeError: Can't set composite field