Я некоторое время искал в сети и исходный код caffe без каких-либо решений, о которых можно было бы говорить, но в пользовательской нейронной сети приложения я создаю несколько пользовательские слои в Python. Проходы вперед и назад функционально работают хорошо, и я могу создавать пользовательские параметры веса в своей процедуре настройки, но, как я ни старался, я не могу заставить кофе установить «официальные» веса для моего слоя. Это, конечно, позволит улучшить моментальные снимки, упростить реализацию решателя и т. д.
Есть идеи, что мне здесь не хватает?
[EDIT: код из слоя, показанного ниже. Убраны некоторые вещи для краткости. Цель этого слоя — добавить цвет к сглаженным активированным фильтрам из сверточного слоя]
def setup(self, bottom, top):
global weights
self.weights = np.random.random((CHANNELS))
def reshape(self, bottom, top):
top[0].reshape(1,2*XDIM,2*YDIM)
def forward(self, bottom, top):
arrSize = bottom[0].data.shape
#Note: speed up w/ numpy ops for this later...
for j in range(0, 2*arrSize[1]):
for k in range(0, 2*arrSize[2]):
# Set hue/sat from hueSat table.
top[0].data[0,j,k] = self.weights[bottom[0].data[0,int(j/2),int(k/2)]]*239
def backward(self, top, propagate_down, bottom):
diffs = np.zeros((CHANNELS))
for i in range(0,300):
for j in range(0,360):
diffs[bottom[0].data[0,i/2,j/2]] = top[0].diff[0,i,j]
#stand in for future scaling
self.weights[...] += diffs[...]/4