KerasのSpatialDropout2Dの動作具体例
6868 ワード
概要
SpatialDropout2Dというのがあるので画像認識で利用を検討したのですが、字面からイメージしたのと違った動作でした。
先行記事もありますが、画像で使う場合の具体例が出ていないので、こちらでまとめます。
具体例
この画像を入力したとして、
これが普通のDropout
これがSpatialDropout2Dです。画像全体で特定のチャンネルをDropする動作です。
私が[Spatial]という字面から想像したのはこういうのでした…。これはdropoutのnoise_shape引数をうまく与えれば実現することができます。
再現用コード
check_dropout.py
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()
check_dropout.py
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()
Author And Source
この問題について(KerasのSpatialDropout2Dの動作具体例), 我々は、より多くの情報をここで見つけました https://qiita.com/stnk20/items/74570dd9a3391cadaf06著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .