Я пытаюсь обучить нейронную сеть с целевой функцией, состоящей из ошибок и регуляризации.
Чтобы выполнить регуляризацию, я хочу получить все веса в виде 1D-тензора (назовите этот тензор weights
), выполнить некоторые операции и добавить это к целевой функции. Как мне получить веса, чтобы я мог продолжать их тренировать?
Пока что я пробовал:
- Использование tf.get_default_graph (). Get_tensor_by_name () - когда я вычисляю градиенты относительно
weights
, градиент условия ошибки всегда равен None
.
- Использование tf.get_variable () - как указано выше, градиент условия ошибки всегда равен
None
- Использование атрибута trainable_weights слоев - атрибут trainable_weights возвращает пустой список.
Регуляризация, которую я надеюсь запустить, представляет собой модель гауссовой смеси, в которой также обучаются сами параметры GMM.
Например, для третьей попытки мой код:
# Here I create the layers
layers = []
for L in range(len(units)):
layer = tf.layers.Dense(units=units[L], activation=tf.nn.relu, name="lay"+str(L))
layers.append(layer)
layers.append(tf.layers.Dense(n_y, activation=None))
# Here I try to get the weights
weights = [L.trainable_weights for L in layers] # Returns empty lists
weights = tf.concat(weights,axis=0)