Pycaffe получить градиенты / веса / уклоны - PullRequest
0 голосов
/ 10 декабря 2018

Итак, я инициализировал объект caffe.Net с

network = caffe.Net('path/to/lenet.prototxt', caffe.TEST) 

, и я хочу получить активацию, веса, смещения, градиенты для каждого слоя с параметрами.Мой текущий подход состоит в том, чтобы сделать step(100), чтобы пройти 100 итераций, а затем посмотреть на каждый слой:

        for layer_name in network._layer_names: 
            if layer_name in network.params:
                x = layer_name
                output = np.array(network.blobs[x].data)
                weight = np.array(network.params[x][0].data)
                bias = np.array(network.params[x][1].data)

, это должно дать мне активацию, веса и смещения каждого слоя.Тогда я их спасу.Не знаю, для градиентов, хотя.

Является ли этот подход для весов / смещений / активаций правильным?

1 Ответ

0 голосов
/ 06 февраля 2019

Вместо .data используйте .diff

Детали реализации

Поскольку нас часто интересуют значения, а также градиенты большого двоичного объекта, большой двоичный объект хранит два фрагмента:воспоминания, данные и различия.Первые - это обычные данные, которые мы передаем, а вторые - градиент, вычисляемый сетью.

http://caffe.berkeleyvision.org/tutorial/net_layer_blob.html

Обратите внимание, что они будут инициализированы нулем, если толькоВы выполнили несколько тренировочных шагов.

...