0

내 데이터 세트는 다음을하지 않습니다 . 핫 인코딩 대상 배열 [0,1], [1,0]을 사용하여 몇 가지 결과를 얻었습니다 (테스트 세트에서 ~ 83 %의 정확도에 도달). 이것이 바보 같음을 깨달은 것은 타겟 어레이를 바이너리 형식 [0] 또는 1으로 변경하고 categorical_crossentropy를 바이너리 크로스 엔트로피로 변경했습니다.검증 정확도는 의미

이 접근법을 사용하면 어떤 학습 속도에 상관없이 유효성 정확도가 82.05 %로 고정되고 교육 정확도가 25.80 %로 고정됩니다. 물론 이것은 의미가 없으며 테스트 세트 정확도는 ~ 30 % 정도입니다.

왜 이런 일이 일어날 수 있습니까? 나는 트레이닝 데이터와 메타 데이터를 모두 확인했는데 정확했다. 아래에 내 코드를 게시합니다.

inp = Input(shape=input_shape) 
out = Conv2D(16, (5, 5),activation = 'relu', kernel_initializer='glorot_uniform', kernel_regularizer=regularizers.l2(0.01), padding='same')(inp) 
out = MaxPooling2D(pool_size=(2, 2))(out) 
out = Dropout(0.5)(out) 

out = Conv2D(32, (3, 3),activation = 'relu',kernel_initializer='glorot_uniform',kernel_regularizer=regularizers.l2(0.01), padding='same')(out) 
out = MaxPooling2D(pool_size=(2, 2))(out) 
out = Dropout(0.5)(out) 

out = Conv2D(32, (3, 3),activation = 'relu',kernel_initializer='glorot_uniform',kernel_regularizer=regularizers.l2(0.01), padding='same')(out) 
out = Dropout(0.5)(out) 

out = Conv2D(64, (3, 3), activation = 'relu',kernel_initializer='glorot_uniform',kernel_regularizer=regularizers.l2(0.01), padding='same')(out) 
out = Conv2D(64, (3, 3),activation = 'relu', kernel_initializer='glorot_uniform',kernel_regularizer=regularizers.l2(0.01), padding='same')(out) 
out = MaxPooling2D(pool_size=(2, 2))(out) 

out = Conv2D(128, (3, 3), activation = 'relu',kernel_initializer='glorot_uniform',kernel_regularizer=regularizers.l2(0.01), padding='same')(out) 
out = Conv2D(128, (3, 3),activation = 'relu', kernel_initializer='glorot_uniform',kernel_regularizer=regularizers.l2(0.01), padding='same')(out) 
out = MaxPooling2D(pool_size=(2, 2))(out) 

out = Conv2D(256, (3, 3),activation = 'relu', kernel_initializer='glorot_uniform',kernel_regularizer=regularizers.l2(0.01), padding='same')(out) 
out = Conv2D(256, (3, 3), activation = 'relu',kernel_initializer='glorot_uniform',kernel_regularizer=regularizers.l2(0.01), padding='same')(out) 
out = MaxPooling2D(pool_size=(2, 2))(out) 
out = Conv2D(512, (3, 3), activation = 'relu',kernel_initializer='glorot_uniform', kernel_regularizer=regularizers.l2(0.01), padding='same')(out) 
out = MaxPooling2D(pool_size=(2, 2))(out) 

out = Flatten()(out) 
out = Dropout(0.5)(out) 
dense1 = Dense(1, activation="softmax")(out) 
model = Model(inputs = inp, outputs = dense1) 

그리고 신 (新) 시대는 다음과 같다 :

dense1 = Dense(1, activation="sigmoid")(out) 

처럼 Epochs

+0

last dense la 예'활성화 = '시그 모이 드' – DJK

답변

0

변경 S 자하는이 softmax에서 마지막 활성화 및 학습 속도를 낮추는 시도

model.compile(optimizer=Adam(lr=0.0001), loss='binary_crossentropy', metrics=['accuracy'])