2017-05-15 5 views
1

pixelwise segmentation 작업에서 ImageGenerator으로 샘플 가중치를 사용하려고합니다.Keras에서 데이터 가중치로 샘플 가중치를 사용하는 방법은 무엇입니까?

  • 이미지 마스크 NumPy와 배열 인
  • sample_weight 배열 (634, 64, 64)
  • (0 내지 4로 인코딩) (634, 1, 64, 64)
  • 마스크는 5 개 종류가 동일한 seed=42.flow 2 발전기 batch_size=32
  • 모델을 사용
  • 데이터는 보강 sample_weight_mode='temporal'
  • 마지막 3 개 개의 층으로 컴파일되고 난 n은 유넷 모델은 다음과 같습니다

    conv2d_19 (Conv2D) (None, 5, 64, 64)  325   
    dropout_18[0][0]     
    
    conv2d_20 (Conv2D) (None, 1, 64, 64)  6   
    conv2d_19[0][0]     
    
    activation_1 (Activation) (None, 1, 64, 64)  0 
    conv2d_20[0][0] 
    

이 오류가 발생합니다 : I가 sample_weight을 바꿀 경우

ValueError: Found a sample_weight array with shape (634, 64, 64). In order to use timestep-wise sample weighting, you should pass a 2D sample_weight array.

을 (4096 634) 내가 얻을 :

ValueError: Found a sample_weight array with shape (634, 4096) for an input with shape (32, 1, 64, 64). sample_weight cannot be broadcast.

사용 방법에 대한 오해 ImageGenerator 또는이 특정 상황을 처리 할 수 ​​없습니까?

샘플 가중치를 사용하지 않으면 모델이 실행되고 오류가 발생하지 않습니다.

Keras 2.0.4, 0.9 Theano

답변

1

Keras 샘플 가중치 입력으로 디폴트 모드의 1D 배열 (기능 당 중량), 및 시간 모드 2D 배열을. 임시 모드가 효과가 있지만 다음과 같이 변경해야합니다. 기본적으로 Keras는 3D 가중치를 지원하지 않으므로 입력에서 64x64 이미지를 병합하고 컨볼 루션 레이어 전에 텐서에서 2D로 바꿔야합니다. (a 1D를 Keras 지금 시간적 순서로 픽셀을 고려하여, 화소 무게 당 받아들이 :

1) 4096 픽셀 긴 편평한 영상을 받아들이 갖는 입력 층을 추가) 634,4096

2 sample_weight을 바꿀 신호)

3) 첫 번째 2D 컨볼 루션 전에 다시 형성 레이어 추가

관련 문제