Я постараюсь ответить на каждый ваш вопрос отдельно.
У меня проблемы с попыткой нарисовать гистограмму веса.
В идеале вы определяете веса и смещения используя tf.get_variable
и добавьте их в сводные гистограммы.
Например:
with tf.name_scope("layer1"):
W1 = tf.get_variable("W1", shape=[input_size, hidden_layer_neurons],
initializer=tf.contrib.layers.xavier_initializer())
layer1 = tf.matmul(X, W1)
layer1_act = tf.nn.tanh(layer1)
tf.summary.histogram("weights", W1)
При необходимости мы также можем добавить гистограммы выходов слоя и выходов активации:
tf.summary.histogram("layer-outputs", layer1)
tf.summary.histogram("activation-outputs", layer1_act)
Но так как вы используетеtf.contrib.layers
, у вас нет такого положения, поскольку contrib.layers
заботится о создании весов и уклонов для вас.В таком случае вы можете взглянуть на tf.trainable_variables()
;Он должен содержать все обучаемые переменные из вашего графика, который содержит все веса и смещения сети.
Вы можете определить простую функцию, например, такую:
def add_hist(train_vars):
for i in train_vars:
name = i.name.split(":")[0]
value = i.value()
tf.summary.histogram(name, value)
Я не могу понять, где разместить эту функцию (в train.py? Или model.py?)
Скалярные сводки, такие как потери и точность, получены во время обучения, поэтому они включены в train.py
;Принимая во внимание, что весовые коэффициенты являются частью вашей базовой модели и, следовательно, должны быть включены в model.py
Так что в ваш model.py
включите это, прежде чем использовать tf.summary.merge_all()
train_vars = tf.trainable_variables()
add_hist(train_vars)
Могу ли я нарисовать весовую гистограмму, загрузив эту сохраненную модель?
Эти гистограммы обычно показывают распределение объектов (весов, активаций и т. Д.) Во время тренировки.Эти графики часто используются в основном для понимания того, как эти распределения меняются со временем, если параметры или их градиенты насыщены или нет, любые четкие шаги, которые необходимо предпринять для улучшения и т. Д.
После сохранения сохраненной контрольной точки (.Предполагается, что ckpt) содержит только окончательные веса и смещения, получено только окончательное распределение, а не график гистограммы за весь период обучения.
Надеюсь, это поможет.