2017-11-28 24 views
0

사용자 정의 레이어를 구현하고 싶습니다. 내 사용자 정의 레이어의 2 개의 입력은 2 개의 별도의 2D 컨볼 루션 레이어에서 오는 2 개의 텐서입니다. 예제가 있습니까?Keras에 2 개의 텐서가 입력 된 사용자 정의 레이어 정의

+0

keras 백엔드 함수를 사용하여 함수를 다시 작성할 수 있습니까? numpy를 사용하려고하면 backpropagation을위한 연결선이 없습니다. --- 람다 또는 커스텀 레이어 사이의 선택은 레이어에서 트레이닝 가능한 가중치를 원하는지 여부에 달려 있습니다. (순수한 계산 인 경우 람다를 사용하십시오). –

+0

Daniel에게 신속한 답변을 해주셔서 감사합니다. 나는 backpropagation을 가지고 싶습니다. 구현하고자하는 계층은 빠른 rcnn 네트워크의 제안 계층입니다. 그래서 훈련할만한 것은 없습니다. 내 혼란은, 내가 무게를 가지지 않으면 어떻게 역 전파가 가능할까요? – Tassou

+0

가중치가 필요 없습니다 (전체 모델이 가중치를 필요로하지만 모든 레이어가 가중치가 필요하지는 않습니다). 그러나 (자동) backpropagation을 그대로 유지하려면 텐서에 직접 keras 백엔드 함수 (또는 tensorflow/theano 함수)가 필요합니다. numpy를 사용하면 연결이 끊어집니다. –

답변

0

훈련이 필요하지 않으므로 람다 (lambda) 기능도 수행합니다. 또는 맞춤 레이어를 그대로 유지하고 trainable을 False로 설정할 수 있습니다. 이 레이어에 대해 가중치가 업데이트되지 않으며 여기에서 수행 한 작업이 모델의 다음 레이어로 전달되며 주석에 언급 된대로 배경이 가중치를 사용하여 다른 레이어에 영향을 미칩니다. 그래서, 확실히 당신의 모델은 뭔가를 배울 것입니다.

나중에이 레이어에 학습을 추가하고 결과를 확인하기 위해 맞춤 레이어를 개인적으로 사용하는 것이 좋습니다. 람다 함수에서는 이것을 할 수 없습니다. 하나 (커널)를 추가하면 '호출'방법으로 사용해야합니다. 그렇지 않은 경우 모델에서 오류가 발생합니다.

+0

감사합니다. 하지만 nump 함수 대신 백엔드 함수를 사용하여 rpn_to_roi 함수를 다시 구현해야만 맞춤 레이어를 사용하는 경우에도 백 프로퍼 그 레이션을 수행해야합니까? – Tassou

+0

예. 백엔드 기능을 사용해야합니다. – Ajjo

+0

확인. 예를 들어 ** anchor_x = (anchor_size * anchor_ratio [0])/C.rpn_stride **는 다음과 같이 구현됩니다 ** anchor_x = K.dot (K.dot (anchor_size, anchor_ratio [0]), K .variable (값 = 1/C.rpn_stride)) **? 이게 옳은 거니? – Tassou