Mam problem ze znalezieniem prawidłowego odwzorowania ciężarów w celu przekształcenia gęstej warstwy w splotową warstwę.Python keras, jak przekształcić gęstą warstwę w warstwę splotową
Jest to fragment z ConvNet że pracuję nad:
model.add(Convolution2D(512, 3, 3, activation='relu'))
model.add(MaxPooling2D((2,2), strides=(2,2)))
model.add(Flatten())
model.add(Dense(4096, activation='relu'))
Po MaxPooling, wejście jest od kształtu (512,7,7). Chciałbym przekształcić gęstą warstwę na splotowego warstwy, aby wyglądać tak:
model.add(Convolution2D(512, 3, 3, activation='relu'))
model.add(MaxPooling2D((2,2), strides=(2,2)))
model.add(Convolution2D(4096, 7, 7, activation='relu'))
Ja jednak nie wiem jak trzeba przekształcić ciężary w celu prawidłowego odwzorowywania spłaszczone wagi do (4096,512,7,7) struktura, która jest potrzebna dla warstwy splotowej? W tej chwili ciężary warstwy gęstej mają wymiar (25088,4096). Muszę jakoś zmapować te 25088 elementów do wymiaru (512,7,7), zachowując prawidłowe odwzorowanie ciężarów na neurony. Do tej pory próbowałem różnych sposobów przekształcania, a następnie transpozycji, ale nie byłem w stanie znaleźć poprawnego mapowania.
Przykładem tego, co staram byłoby to:
weights[0] = np.transpose(np.reshape(weights[0],(512,7,7,4096)),(3,0,1,2))
ale nie odwzorowywać ciężarów poprawnie. Sprawdziłem, czy mapowanie jest prawidłowe, porównując wyniki dla obu modeli. Jeśli zrobione poprawnie, oczekuję, że wynik będzie taki sam.