2016-10-25 3 views
1

단일 출력 뉴런에 대한 선형 활성화 기능 (Keras 기본값)과 다음 I 순차 모델했습니다 람다 출력층

model = Sequential() 
model.add(... 
... 
model.add(Dense(100, activation='relu')) 
model.add(Dense(1)) 

가 I (100)에 의해 제한 될 최종 번호가 필요하므로 I 수정 코드의 마지막 행 위가 될 수 있습니다 : 그것은 올바른

model.add(Lambda(lambda x: x%100, output_shape=(1))) 
  • 인가? 여기서 x는 내가 예상 한대로 그물을 의미합니까?
  • "Lambda에서 output_shape은 목록, 튜플 또는 함수 여야합니다."라는 오류가 발생합니다.

답변

1

output_shape=(1)output_shape=(1,)이어야합니다.

BTW, 더 나은되는 대안을 다음과 같은 고려 :

  • 클립 출력을 [0.0, 100.0]에.

    #... 
    model.add(Dense(1)) #-2nd line from code in question 
    model.add(Lambda(lambda x: max(0., min(x,100.)), output_shape=(1,))) 
    

사용 시그 모이 출력층 스케일링 100

  • 개조 반대로이 연속 함수이다.

    #... 
    model.add(Dense(1), activation='sigmoid') 
    model.add(Lambda(lambda x:x*100., output_shape=(1,))) 
    

이 SGD에 친절, 미분이다.

+0

고맙습니다. 그렇다고해서 출력 뉴런이 100 개가 아닌 것은 아닙니다. –

+0

@ hesham-eraqi 아니요, 시그널이 활성화 된 상태에서'[0.0, 1.0]'에 최종 '밀도'레이어 출력 값을 만든 다음 람다를 사용하여 '[0.0, 100.0]'크기로 조정합니다. – Kh40tiK

+0

고맙습니다. 이것은 좋은 해결 방법입니다. 하지만 나는 단지 lamda의 단일 직접 레이어를 사용하고 싶었습니다. 코드 라인에는 하나가 아닌 100 개의 출력 뉴런이 있습니까? –