2017-12-12 21 views
1

여러 개의 작은 모델/봇을 함께 교육하기 위해 BucketingModule을 사용하고 있습니다. 여기에서 버킷 키는 bot_id입니다. 그러나 각 봇에는 별도의 대상 레이블/클래스 집합이 있습니다 (따라서 각 봇마다 서로 다른 크기의 softmax 계층이 있음).mxnet의 BucketingModule에서 특정 레이어 간의 가중치 공유 방지?

mxnet에서 모든 모델에 대해 가중치를 공유하고 싶지만, 모든 봇 중에서 하나 (softmax)를 공유하고 싶은 그런 방법이 있습니까?

sym_gen 메서드를 사용하여 어떻게 그러한 모델을 초기화 할 수 있습니까? sym_gen 방법에서, 소프트 맥스 층에 I를 지정하면 num_hidden=size_dict[bot]

pred = mx.sym.FullyConnected(data=pred, num_hidden=len(size_dict[bot]), name='pred') 
pred = mx.sym.SoftmaxOutput(data=pred, label=label, name='softmax') 

는 I 오류 얻을 각 로봇은 목표 클래스의 다른 번호를 갖는 한 말이

Inferred shape does not match shared_exec.arg_array's shape

한다.

답변

2

이 문제는 게시 여기에 해결되었습니다 : https://github.com/apache/incubator-mxnet/issues/9042

당신은의 하위 집합을 반환하는 모든 FC의 다른 모양의 층, 및 sym_gen (other_keys)를 포함하는 "마스터 네트워크"를 반환 sym_gen (default_bucket_key)를 만들 수 있습니다 하나의 특정 FC와 마스터 네트워크. 마스터 네트워크의 경우 mx.sym.Group을 사용하여 모든 출력을 그룹화해야 하나의 심볼 만 반환 될 수 있습니다.

+0

링크 뒤에 컨텍스트 추가. –