https://github.com/fchollet/deep-learning-with-python-notebooks/blob/master/5.4-visualizing-what-con

5152 단어 KerasCNN
대상https://github.com/fchollet/deep-learning-with-python-notebooks/blob/master/5.4-visualizing-what-convnets-learn.ipynb의 코드 해석
grads = K.gradients(loss, model.input)[0]

K.gradients의 역할은 Returns the gradients of loss w.r.t. variables이며 모델에 대한 loss의 반환입니다.input의 계단.K.gradients에서 반환된 tensor의 shape 및 두 번째 매개변수 모델.input 동일.사다리의 방향은 함수가 정점에 가장 빨리 상승하는 방향이다. 그러면 사다리의 반대 방향은 함수가 정점에 가장 빨리 하락하는 방향이다
# We start from a gray image with some noise
input_img_data = np.random.random((1, 150, 150, 3)) * 20 + 128.

# Run gradient ascent for 40 steps
step = 1.  # this is the magnitude of each gradient update
for i in range(40):
    # Compute the loss value and gradient value
    loss_value, grads_value = iterate([input_img_data])
    # Here we adjust the input image in the direction that maximizes the loss
    input_img_data += grads_value * step #      +,       ;           ,  https://www.cnblogs.com/HongjianChen/p/8718988.html

Visualizing convnet Filters 모듈


저자가 한 일은 사다리 상승 알고리즘을 이용하여 처음np로 변화하는 것이다.zeros((1,150,150,3)의 입력으로 ImageNet에서 미리 훈련된 VG16의'Block3 conv1'층의 필터 0의 평균치를 최소화합니다

이 안에는 매우 재미있는 결론이 하나 있다.


convnet의 모든 층은 필터를 배워서 입력을 필터의 조합으로 표시할 수 있습니다.이것은 부립엽 변환이 신호를 어떻게 여현 함수 그룹으로 분해하는지와 유사하다.모델 내에서 향상됨에 따라 이러한 필터 그룹의 필터는 점점 더 복잡하고 정교해집니다.
4
  • 모델의 첫 번째 레이어 필터(block1 conv1)는 간단한 방향 모서리와 색상(또는 일부 경우 색상 모서리)을 인코딩합니다
  • block2_conv1의 필터 인코딩은 가장자리와 색의 조합으로 구성된 간단한 무늬입니다

  • 4
  • 높은 층의 필터는 자연 이미지의 무늬인 깃털, 눈, 나뭇잎 등과 유사하게 시작되었다

  • Visualizing heatmaps of class activation 모듈

    
    # This is the "african elephant" entry in the prediction vector
    african_elephant_output = model.output[:, 386]
    
    # The is the output feature map of the `block5_conv3` layer,
    # the last convolutional layer in VGG16
    last_conv_layer = model.get_layer('block5_conv3')
    
    # This is the gradient of the "african elephant" class with regard to
    # the output feature map of `block5_conv3`
    grads = K.gradients(african_elephant_output, last_conv_layer.output)[0]
    

    여기서 Africanelephant_output의 차원은(?,) lastconv_layer.output의 차원(?, 14, 14, 512)grads의 차원(?, 14, 14, 512)

    좋은 웹페이지 즐겨찾기