2017-12-13 10 views
1

Kerac/Tensorflow (Jupyter Notebook)에서 Inception V3 모델의 최상위 레이어를 검색하는 중입니다.Python에서 잘못된 함수 버전이 호출되었습니다.

Inception V3 모델과 그 가중치를 올바르게 검색 할 수있었습니다. 이제 다음 코드 조각을 사용하여 완전 연결 계층 (최상위 계층)을 얻으려고합니다.

base_model = InceptionV3(weights=weights) 
base_model.get_layer('flatten') 

그러나, 함수가 말을 실패 내가 스택 트레이스 보았을 때

": 없음 같은 층에 ValueError가 평평", topology.py에서 get_layer() 함수이다라고 점점 'keras/engine'.

이 함수 대신 models.py의 get_layer() 함수가 의 케라에 바로 호출되어야합니다.

무엇이 문제 일 수 있습니까? 파이썬이 올바른 버전을 호출하도록하려면 어떻게해야합니까? 또는 InceptionV3 모델에서 가중치를 얻는 다른 방법이 있습니까?


그냥 base_model.layers 목록의 내용을 열거 시도하고 레이어의 이름이 다른과 을 평평라는 이름의 레이어가 발견되지 않는 것으로 나타났다. 그래서 flatten을 마지막으로 ' mixed10'이라는 FC 레이어로 대체하고 코드가 작동했습니다.

옳은 일입니까? 또는 나는 부적절한 일을하고 있는가?

답변

0

이 레이어의 이름이 계속 바뀌 었습니다. 따라서 가장 좋은 방법은 Model.layers[].name 또는 Model.summary()을 사용하여 모든 레이어 이름을 열거하고 출력에 나열된 이름을 사용하는 것입니다.

0

InceptionV3 모델은 더는 'flatten' 계층

상단을 얻기 위해 완전히 연결 계층 방금

base_model = InceptionV3(weights=weights, include_top=False) 
+0

감사를 사용할 수 없습니다! 그러나이 경우'include_top = True'를 설정해야합니까? – PallaviJog