Tensorflow - градиент меняется, но вес мало меняется - PullRequest
1 голос
/ 12 марта 2020

Я создал CNN для решения проблемы регрессии. Проблема в том, что, когда я запускаю код, распределение веса ядра не меняется, в то время как их градиенты имеют некоторое значение.

С другой стороны, оба градиента и значения смещений меняются.

Это распределение весов и смещений на TensorBoard. Первая строка показывает градиенты, а вторая строка показывает значения веса / смещения.

enter image description here

И это код, который я использовал для обучения сеть

optimizer = tf.train.AdamOptimizer(learning_rate, beta_1)
grads = optimizer.compute_gradients(total_loss)            # returns grads and vars
train_op = optimizer.minimize(total_loss)

и для гистограмм на TensorBoard.

for g in grads:
    tf.summary.histogram('{}'.format(g[1].name), g[1], family='weights')
    if g[0] is not None:
        tf.summary.histogram('{}'.format(g[1).name), g[0], family='gradients')

Я думаю, что 'weights / conv1 / kernels' и 'weights / conv2 / kernels ' должен измениться.

(На самом деле у меня более 2 слоев в сети. Есть 9 слоев cnn, и изменяется только вес последнего слоя свертки.)

Это так? результат естественный? Или я неправильно использовал optimizer.compute_gradients?

...