Чистая хирургия Пикафф копирует вес и изменяет форму

Я пытаюсь скопировать изученные веса слоя «con_1» размером 3x3x3 предварительно обученной модели в новый слой «con

      layer name: 'con_1'
      size: 3x3x3

      new layer name: 'con_1_1'
      size: 6x3x3

      con_1_1 should be [con_1, con_1] % just concatenation of two con_1 weights
1», чтобы размер нового слоя был 6x3x3 (6 каналов). На самом деле я пытаюсь воспроизвести веса размером от 3x3x3 до 6x3x3. Как я могу сделать это с помощью pycaffe.

      layer name: 'con_1'
      size: 3x3x3

      new layer name: 'con_1_1'
      size: 6x3x3

      con_1_1 should be [con_1, con_1] % just concatenation of two con_1 weights

person user570593    schedule 10.08.2016    source источник


Ответы (1)


Вы должны прочитать сеть, используя файл .prototxt и файл .caffemodel. Затем скопируйте веса из исходной сети в переменную, а затем скопируйте их в отредактированную сеть.

net = caffe.Net('path/to/conv.prototxt', 'path/to/conv.caffemodel', caffe.TEST)
W = net.params['con_1'][0].data[...]
b = net.params['con_1'][1].data[...]

net = caffe.Net('path/to/conv2.prototxt', 'path/to/conv2.caffemodel', caffe.TEST)
W_1 = numpy.concatenate(W, W, axis=2)
b_1 = numpy.concatenate(b, b, axis=0)
net.params['con_1_1'][0].data[...] = W_1
net.params['con_1_1'][1].data[...] = b_1

Взгляните на это ссылка и эта ссылка для получения дополнительной информации.

person malreddysid    schedule 10.08.2016