Keras의 SpatialDropout2D의 동작 구체적인 예
개요
SpatialDropout2D라고 하는 것이 있으므로 이미지 인식으로 이용을 검토했습니다만, 자면으로부터 이미지 한 것과 다른 동작이었습니다.
선행 기사 도 있습니다만, 화상으로 사용하는 경우의 구체예가 나와 있지 않으므로, 이쪽으로 정리합니다.
구체적인 예
이 이미지를 입력하면
이것이 일반 Dropout
이것은 SpatialDropout2D입니다. 이미지 전체에서 특정 채널을 Drop하는 동작입니다.
내가 [Spatial]이라는 자면에서 상상한 것은 이런 것이었습니다. 이것은 dropout의 noise_shape 인수를 성공적으로 주면 실현할 수 있습니다.
재현 코드
check_dropout.pyimport numpy as np
import cv2
from tensorflow.keras.layers import *
from tensorflow.keras import backend as K
src = cv2.imread("colorbar.png")
height, width = src.shape[:2]
def point_dropout_function(x, drop_rate):
s = K.shape(x)
return K.dropout(x, drop_rate, (s[0], s[1], s[2], 1))
K.set_learning_phase(1) # 実行時にDropout有効化するために必要
x = Input((height, width, 3))
y_dropout = Dropout(0.2)(x)
y_spatial = SpatialDropout2D(0.2)(x)
y_point = Lambda(lambda x: point_dropout_function(x, 0.2))(x)
f = K.function([x], [y_dropout, y_spatial, y_point])
for i in range(10):
dst_dropout, dst_spatial, dst_point = f([src[None, :, :, :]])
cv2.imshow("src", src)
cv2.imshow("dst_dropout", dst_dropout[0])
cv2.imshow("dst_spatial", dst_spatial[0])
cv2.imshow("dst_point", dst_point[0])
cv2.waitKey()
Reference
이 문제에 관하여(Keras의 SpatialDropout2D의 동작 구체적인 예), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/stnk20/items/74570dd9a3391cadaf06
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
이 이미지를 입력하면
이것이 일반 Dropout
이것은 SpatialDropout2D입니다. 이미지 전체에서 특정 채널을 Drop하는 동작입니다.
내가 [Spatial]이라는 자면에서 상상한 것은 이런 것이었습니다. 이것은 dropout의 noise_shape 인수를 성공적으로 주면 실현할 수 있습니다.
재현 코드
check_dropout.pyimport numpy as np
import cv2
from tensorflow.keras.layers import *
from tensorflow.keras import backend as K
src = cv2.imread("colorbar.png")
height, width = src.shape[:2]
def point_dropout_function(x, drop_rate):
s = K.shape(x)
return K.dropout(x, drop_rate, (s[0], s[1], s[2], 1))
K.set_learning_phase(1) # 実行時にDropout有効化するために必要
x = Input((height, width, 3))
y_dropout = Dropout(0.2)(x)
y_spatial = SpatialDropout2D(0.2)(x)
y_point = Lambda(lambda x: point_dropout_function(x, 0.2))(x)
f = K.function([x], [y_dropout, y_spatial, y_point])
for i in range(10):
dst_dropout, dst_spatial, dst_point = f([src[None, :, :, :]])
cv2.imshow("src", src)
cv2.imshow("dst_dropout", dst_dropout[0])
cv2.imshow("dst_spatial", dst_spatial[0])
cv2.imshow("dst_point", dst_point[0])
cv2.waitKey()
Reference
이 문제에 관하여(Keras의 SpatialDropout2D의 동작 구체적인 예), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/stnk20/items/74570dd9a3391cadaf06
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import numpy as np
import cv2
from tensorflow.keras.layers import *
from tensorflow.keras import backend as K
src = cv2.imread("colorbar.png")
height, width = src.shape[:2]
def point_dropout_function(x, drop_rate):
s = K.shape(x)
return K.dropout(x, drop_rate, (s[0], s[1], s[2], 1))
K.set_learning_phase(1) # 実行時にDropout有効化するために必要
x = Input((height, width, 3))
y_dropout = Dropout(0.2)(x)
y_spatial = SpatialDropout2D(0.2)(x)
y_point = Lambda(lambda x: point_dropout_function(x, 0.2))(x)
f = K.function([x], [y_dropout, y_spatial, y_point])
for i in range(10):
dst_dropout, dst_spatial, dst_point = f([src[None, :, :, :]])
cv2.imshow("src", src)
cv2.imshow("dst_dropout", dst_dropout[0])
cv2.imshow("dst_spatial", dst_spatial[0])
cv2.imshow("dst_point", dst_point[0])
cv2.waitKey()
Reference
이 문제에 관하여(Keras의 SpatialDropout2D의 동작 구체적인 예), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/stnk20/items/74570dd9a3391cadaf06텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)