1
Caffe와 함께 새로운 레이어를 추가 할 수 있습니까? Matlab 또는 Python을 사용하여 어떻게 할 수 있습니까?Caffe에 새 레이어를 추가 할 수 있습니까?
Caffe와 함께 새로운 레이어를 추가 할 수 있습니까? Matlab 또는 Python을 사용하여 어떻게 할 수 있습니까?Caffe에 새 레이어를 추가 할 수 있습니까?
예, pycaffe를 사용하여 맞춤 손실 기능을 추가 할 수 있습니다. 다음은 Python의 유클리드 손실 계층의 예입니다 (Caffe Github repo에서 가져옴). 당신은 앞으로 기능의 손실 함수를 제공해야하며 뒤로 방법에 그라데이션 : 그것은 저장
import caffe
import numpy as np
class EuclideanLossLayer(caffe.Layer):
"""
Compute the Euclidean Loss in the same manner as the C++ EuclideanLossLayer
to demonstrate the class interface for developing layers in Python.
"""
def setup(self, bottom, top):
# check input pair
if len(bottom) != 2:
raise Exception("Need two inputs to compute distance.")
def reshape(self, bottom, top):
# check input dimensions match
if bottom[0].count != bottom[1].count:
raise Exception("Inputs must have the same dimension.")
# difference is shape of inputs
self.diff = np.zeros_like(bottom[0].data, dtype=np.float32)
# loss output is scalar
top[0].reshape(1)
def forward(self, bottom, top):
self.diff[...] = bottom[0].data - bottom[1].data
top[0].data[...] = np.sum(self.diff**2)/bottom[0].num/2.
def backward(self, top, propagate_down, bottom):
for i in range(2):
if not propagate_down[i]:
continue
if i == 0:
sign = 1
else:
sign = -1
bottom[i].diff[...] = sign * self.diff/bottom[i].num
를 예를 들어 pyloss.py한다. 이후
이n.loss = L.Python(n.ipx, n.ipy,python_param=dict(module='pyloss',layer='EuclideanLossLayer'),
loss_weight=1)
그냥 컴퓨팅에 매우 조심하고 기울기를 위치 : implemeting (뒤로 기능) :
layer {
type: 'Python'
name: 'loss'
top: 'loss'
bottom: 'ipx'
bottom: 'ipy'
python_param {
# the module name -- usually the filename -- that needs to be in $PYTHONPATH
module: 'pyloss'
# the layer name -- the class name in the module
layer: 'EuclideanLossLayer'
}
# set loss weight so Caffe knows this is a loss layer.
# since PythonLayer inherits directly from Layer, this isn't automatically
# known to Caffe
loss_weight: 1
}
을 아니면 파이썬 스크립트 : 당신은 다음을로드 할 prototxt 파일에 파이썬 층을 사용할 수 있습니다 오류가 발생하기 쉽습니다.
파이썬을위한 그라데이션 검사 유틸리티 [이 구현] (https://github.com/tnarihi/caffe/blob/python-gradient-checker/python/caffe/test/test_gradient_checker.py)를 사용할 수 있습니다. – Shai