저는 Deep Learning과 Keras를 처음 사용합니다. 미리 계산 된 가중치 초기화 가중치 = 'imagenet'은 Keras에서 모델을 정의 할 때 사용되는 것을 의미합니까?Keras에서 모델 정의하기
ResNet50(weights='imagenet')
고마워요!
저는 Deep Learning과 Keras를 처음 사용합니다. 미리 계산 된 가중치 초기화 가중치 = 'imagenet'은 Keras에서 모델을 정의 할 때 사용되는 것을 의미합니까?Keras에서 모델 정의하기
ResNet50(weights='imagenet')
고마워요!
이 코드 줄은 ResNet50
이라는 네트워크 아키텍처를 만듭니다 (자세한 내용은 here을 참조하십시오). weights='imagenet'
은 Keras
에 imagenet
데이터 세트에서 학습 된이 네트워크의 가중치를로드합니다. 이 정보가 없으면 Keras
은 네트워크 아키텍처를 준비 할 수는 있지만 모델의 목적을 알지 못하기 때문에 가중치를 "양호한"값으로 설정할 수 없습니다. 이는 데이터 세트를 지정하여 판별됩니다.
다른 데이터 세트를 사용하는 경우 모델을 사전 훈련 된 모델로 사용하고 있습니다. 이 기술에 대한 자세한 내용은 here을 참조하십시오. 일반적인 아이디어는 모델이 복잡한 (이미지) 데이터 세트에 대해 교육을받은 후 가장 낮은 레이어 (대부분의 경우 : 회선)에서 모서리, 모서리 등과 같은 매우 기본적인 기능을 감지한다는 것입니다. 이는 기본 기능을 다시 감지 할 필요가 없으므로 모델이 훨씬 빠르게 자신의 데이터 세트를 분석하는 방법을 학습하는 데 도움이됩니다.
답장을 보내 주셔서 감사합니다. 하지만 다른 데이터 세트를 사용하고 있습니다. 다른 데이터 세트에서 훈련 된 네트워크의 가중치를 사용하면 모델이 학습하는 데 어떻게 도움이됩니까? (또는 사전 모델링 된 모델의 가중치를 사용하는 중요성은 무엇입니까?) –
@AKSHAYAAVAIDYANATHAN 편집을 참조하십시오. – FlashTek
@FlashTek 대답에 이어 우리는 데이터 세트에서이 모델을 훈련시킬 수 있습니다. 다음 코드에서
봐 : 위의 코드에서
model = applications.ResNet50(weights = "imagenet", include_top=False,
input_shape = (img_width, img_height,3))
# Freeze the layers which you don't want to train. Here I am freezing the first 30 layers.
for layer in model.layers[0:30]:
layer.trainable = False
for layer in model.layers[30:]:
layer.trainable = True
#Adding custom Layers
x = Flatten()(model.output)
# x = Dense(1024, activation="relu")(x)
# x = Dropout(0.5)(x)
# x = Dense(1024, activation="relu")(x)
# x = Dropout(0.5)(x)
x = Dense(1024, activation="relu")(x)
predictions = Dense(2, activation="softmax")(x)
우리가 layer.trainable을 할당하여 우리는 우리의 데이터 세트에 훈련 얼마나 많은 계층 resnet의 지정하는 수 있습니다에 그것을 훈련하는 경우는 true 귀하의 데이터 세트 또는 그렇지 않으면 거짓. 추가 지정 층
재미있는 설명입니다. 감사. –
질문이 해결 된 경우,이 항목을 닫 솔루션으로 가장 도움이 답을 표시해야합니다 같이
는 그 외에도 우리는 또한 네트워크 후에 레이어를 스틱 수 있습니다. – FlashTek