게으른 콘볼 루션 신경망을 방지하는 방법은 무엇입니까? 나는 KERAS와 함께 훈련 한 후에 '게으른 CNN'으로 끝맺습니다. 입력이 무엇이든 출력은 일정합니다. 문제가 뭐라고 생각하니?게으름 콘벌 루션 신경망을 방지하는 방법은 무엇입니까?
나는 NVIDIA의자가 학습 자동차 용 학습 학습지 인 the paper을 반복적으로 사용하려고합니다. 절대적으로, 나는 진짜 차가 없다. 그러나 Udacity의 simulator. 시뮬레이터는 자동차의 전경에 대한 수치를 생성합니다.
는 CNN은 도면을 수신하고, 트랙의 차를 유지하는 조향각을 준다. 이 게임의 규칙은 모의 차량을 안전하게 추적 할 수 있도록하는 것입니다. 그다지 어렵지 않습니다.
KERAS로 훈련 한 후에 게으른 CNN으로 끝나는 경우가 있습니다. 일정한 조향 각도를 제공합니다. 시뮬레이션 된 자동차는 트릭을 벗어나지 만 CNN의 출력에는 변화가 없습니다. 특히 레이어가 더 깊어집니다. CNN은 the paper입니다.
이렇게 CNN을 사용하면 교육 후에 유용한 모델을 얻을 수 있습니다.
model = Sequential()
model.add(Lambda(lambda x: x/255.0 - 0.5, input_shape = (160,320,3)))
model.add(Cropping2D(cropping=((70,25),(0,0))))
model.add(Conv2D(24, 5, strides=(2, 2)))
model.add(Activation('relu'))
model.add(Conv2D(36, 5, strides=(2, 2)))
model.add(Activation('relu'))
model.add(Conv2D(48, 5, strides=(2, 2)))
model.add(Activation('relu'))
model.add(Flatten())
model.add(Dense(50))
model.add(Activation('sigmoid'))
model.add(Dense(10))
model.add(Activation('sigmoid'))
model.add(Dense(1))
그러나 더 깊은 CNN을 사용하면 지연된 CNN을 수신 할 기회가 더 많습니다. 특히, NVIDIA를 좋아하는 CNN을 사용하면 모든 교육 후에 거의 게으른 CNN이 수신됩니다.
model = Sequential()
model.add(Lambda(lambda x: x/255.0 - 0.5, input_shape = (160,320,3)))
model.add(Cropping2D(cropping=((70,25),(0,0))))
model.add(Conv2D(24, 5, strides=(2, 2)))
model.add(Activation('relu'))
model.add(Conv2D(36, 5, strides=(2, 2)))
model.add(Activation('relu'))
model.add(Conv2D(48, 5, strides=(2, 2)))
model.add(Activation('relu'))
model.add(Conv2D(64, 3, strides=(1, 1)))
model.add(Activation('relu'))
model.add(Conv2D(64, 3, strides=(1, 1)))
model.add(Activation('relu'))
model.add(Flatten())
model.add(Dense(1164))
model.add(Activation('sigmoid'))
model.add(Dense(100))
model.add(Activation('sigmoid'))
model.add(Dense(50))
model.add(Activation('sigmoid'))
model.add(Dense(10))
model.add(Activation('sigmoid'))
model.add(Dense(1))
컨볼 루션 레이어에는 'relu'를 사용하고 완전히 연결된 레이어의 활성화 기능은 'sigmoid'입니다. 정품 인증 기능을 변경하려고했지만 효과가 없습니다.
내 분석이 있습니다. 나는 내가 동일한 코드와 더 간단한 CNN으로 차를 성공적으로 운전할 수 있기 때문에 프로그램의 버그에 동의하지 않는다. 이유는 시뮬레이터 나 신경망의 구조라고 생각합니다. 실제자가 운전 차량에서 조향 각도 인 훈련 신호에는 소음이 있어야합니다. 그러므로, 운전자는 실제 도로에서 여전히 바퀴를 보유하지 못한다. 그러나 시뮬레이터에서 트레이닝 신호는 매우 깨끗합니다. 조향 각도의 거의 60 %가 0입니다. 옵티마이 저는 CNN의 출력을 0에 가깝게함으로써 쉽게 작업을 수행 할 수 있습니다. 최적화 프로그램이 너무 게으른 것 같습니다. 그러나 우리가 정말로이 CNN 출력을 원할 때, 그것은 또한 0을줍니다. 그래서, 나는이 0 조향각에 작은 잡음을 추가합니다. 게으른 CNN을 얻는 기회는 더 작지만 사라지지 않습니다.
내 분석에 대해 어떻게 생각하십니까? 내가 사용할 수있는 다른 전략이 있습니까? CNN 연구의 오랜 역사에서 비슷한 문제가 해결되었는지 궁금합니다.
자원는 :
관련 파일은 GitHub에 업로드되었습니다. 이러한 파일을 사용하여 전체 실험을 반복 할 수 있습니다.
관련 파일이 [GitHub] https://github.com/BlueBirdHouse/CarND-Behavioral-Cloning-P3/에 업로드되었습니다. 이러한 파일을 사용하여 전체 실험을 반복 할 수 있습니다. –
질문 공간을 사용하여 질문을 업데이트하지 마십시오. 대신 게시물을 수정하십시오. – desertnaut