本文整理汇总了Python中keras.layers.DepthwiseConv2D方法的典型用法代码示例。如果您正苦于以下问题:Python layers.DepthwiseConv2D方法的具体用法?Python layers.DepthwiseConv2D怎么用?Python layers.DepthwiseConv2D使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类keras.layers
的用法示例。
在下文中一共展示了layers.DepthwiseConv2D方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: test_tiny_depthwise_conv_same_pad
# 需要导入模块: from keras import layers [as 别名]
# 或者: from keras.layers import DepthwiseConv2D [as 别名]
def test_tiny_depthwise_conv_same_pad(self):
np.random.seed(1988)
input_dim = 16
input_shape = (input_dim, input_dim, 3)
depth_multiplier = 1
kernel_height = 3
kernel_width = 3
# Define a model
model = Sequential()
model.add(
DepthwiseConv2D(
depth_multiplier=depth_multiplier,
kernel_size=(kernel_height, kernel_width),
input_shape=input_shape,
padding="same",
strides=(1, 1),
)
)
# Set some random weights
model.set_weights([np.random.rand(*w.shape) for w in model.get_weights()])
# Test the keras model
self._test_model(model)
示例2: test_tiny_depthwise_conv_valid_pad
# 需要导入模块: from keras import layers [as 别名]
# 或者: from keras.layers import DepthwiseConv2D [as 别名]
def test_tiny_depthwise_conv_valid_pad(self):
np.random.seed(1988)
input_dim = 16
input_shape = (input_dim, input_dim, 3)
depth_multiplier = 1
kernel_height = 3
kernel_width = 3
# Define a model
model = Sequential()
model.add(
DepthwiseConv2D(
depth_multiplier=depth_multiplier,
kernel_size=(kernel_height, kernel_width),
input_shape=input_shape,
padding="valid",
strides=(1, 1),
)
)
# Set some random weights
model.set_weights([np.random.rand(*w.shape) for w in model.get_weights()])
# Test the keras model
self._test_model(model)
示例3: test_tiny_depthwise_conv_same_pad_depth_multiplier
# 需要导入模块: from keras import layers [as 别名]
# 或者: from keras.layers import DepthwiseConv2D [as 别名]
def test_tiny_depthwise_conv_same_pad_depth_multiplier(self):
np.random.seed(1988)
input_dim = 16
input_shape = (input_dim, input_dim, 3)
depth_multiplier = 4
kernel_height = 3
kernel_width = 3
# Define a model
model = Sequential()
model.add(
DepthwiseConv2D(
depth_multiplier=depth_multiplier,
kernel_size=(kernel_height, kernel_width),
input_shape=input_shape,
padding="same",
strides=(1, 1),
)
)
# Set some random weights
model.set_weights([np.random.rand(*w.shape) for w in model.get_weights()])
# Test the keras model
self._test_model(model)
示例4: test_tiny_depthwise_conv_valid_pad_depth_multiplier
# 需要导入模块: from keras import layers [as 别名]
# 或者: from keras.layers import DepthwiseConv2D [as 别名]
def test_tiny_depthwise_conv_valid_pad_depth_multiplier(self):
np.random.seed(1988)
input_dim = 16
input_shape = (input_dim, input_dim, 3)
depth_multiplier = 2
kernel_height = 3
kernel_width = 3
# Define a model
model = Sequential()
model.add(
DepthwiseConv2D(
depth_multiplier=depth_multiplier,
kernel_size=(kernel_height, kernel_width),
input_shape=input_shape,
padding="valid",
strides=(1, 1),
)
)
# Set some random weights
model.set_weights([np.random.rand(*w.shape) for w in model.get_weights()])
# Test the keras model
self._test_model(model)
示例5: _inverted_res_block
# 需要导入模块: from keras import layers [as 别名]
# 或者: from keras.layers import DepthwiseConv2D [as 别名]
def _inverted_res_block(inputs, expansion, stride, alpha, filters, block_id, skip_connection, rate=1):
in_channels = inputs.shape[-1].value # inputs._keras_shape[-1]
pointwise_conv_filters = int(filters * alpha)
pointwise_filters = _make_divisible(pointwise_conv_filters, 8)
x = inputs
prefix = 'expanded_conv_{}_'.format(block_id)
if block_id:
# Expand
x = Conv2D(expansion * in_channels, kernel_size=1, padding='same',
use_bias=False, activation=None,
name=prefix + 'expand')(x)
x = BatchNormalization(epsilon=1e-3, momentum=0.999,
name=prefix + 'expand_BN')(x)
x = Activation(relu6, name=prefix + 'expand_relu')(x)
else:
prefix = 'expanded_conv_'
# Depthwise
x = DepthwiseConv2D(kernel_size=3, strides=stride, activation=None,
use_bias=False, padding='same', dilation_rate=(rate, rate),
name=prefix + 'depthwise')(x)
x = BatchNormalization(epsilon=1e-3, momentum=0.999,
name=prefix + 'depthwise_BN')(x)
x = Activation(relu6, name=prefix + 'depthwise_relu')(x)
# Project
x = Conv2D(pointwise_filters,
kernel_size=1, padding='same', use_bias=False, activation=None,
name=prefix + 'project')(x)
x = BatchNormalization(epsilon=1e-3, momentum=0.999,
name=prefix + 'project_BN')(x)
if skip_connection:
return Add(name=prefix + 'add')([inputs, x])
# if in_channels == pointwise_filters and stride == 1:
# return Add(name='res_connect_' + str(block_id))([inputs, x])
return x
示例6: SepConv_BN
# 需要导入模块: from keras import layers [as 别名]
# 或者: from keras.layers import DepthwiseConv2D [as 别名]
def SepConv_BN(x, filters, prefix, stride=1, kernel_size=3, rate=1, depth_activation=False, epsilon=1e-3):
# 计算padding的数量,hw是否需要收缩
if stride == 1:
depth_padding = 'same'
else:
kernel_size_effective = kernel_size + (kernel_size - 1) * (rate - 1)
pad_total = kernel_size_effective - 1
pad_beg = pad_total // 2
pad_end = pad_total - pad_beg
x = ZeroPadding2D((pad_beg, pad_end))(x)
depth_padding = 'valid'
# 如果需要激活函数
if not depth_activation:
x = Activation('relu')(x)
# 分离卷积,首先3x3分离卷积,再1x1卷积
# 3x3采用膨胀卷积
x = DepthwiseConv2D((kernel_size, kernel_size), strides=(stride, stride), dilation_rate=(rate, rate),
padding=depth_padding, use_bias=False, name=prefix + '_depthwise')(x)
x = BatchNormalization(name=prefix + '_depthwise_BN', epsilon=epsilon)(x)
if depth_activation:
x = Activation('relu')(x)
# 1x1卷积,进行压缩
x = Conv2D(filters, (1, 1), padding='same',
use_bias=False, name=prefix + '_pointwise')(x)
x = BatchNormalization(name=prefix + '_pointwise_BN', epsilon=epsilon)(x)
if depth_activation:
x = Activation('relu')(x)
return x
示例7: SepConv_BN
# 需要导入模块: from keras import layers [as 别名]
# 或者: from keras.layers import DepthwiseConv2D [as 别名]
def SepConv_BN(x, filters, prefix, stride=1, kernel_size=3, rate=1, depth_activation=False, epsilon=1e-3):
""" SepConv with BN between depthwise & pointwise. Optionally add activation after BN
Implements right "same" padding for even kernel sizes
Args:
x: input tensor
filters: num of filters in pointwise convolution
prefix: prefix before name
stride: stride at depthwise conv
kernel_size: kernel size for depthwise convolution
rate: atrous rate for depthwise convolution
depth_activation: flag to use activation between depthwise & poinwise convs
epsilon: epsilon to use in BN layer
"""
if stride == 1:
depth_padding = 'same'
else:
kernel_size_effective = kernel_size + (kernel_size - 1) * (rate - 1)
pad_total = kernel_size_effective - 1
pad_beg = pad_total // 2
pad_end = pad_total - pad_beg
x = ZeroPadding2D((pad_beg, pad_end))(x)
depth_padding = 'valid'
if not depth_activation:
x = Activation('relu')(x)
x = DepthwiseConv2D((kernel_size, kernel_size), strides=(stride, stride), dilation_rate=(rate, rate),
padding=depth_padding, use_bias=False, name=prefix + '_depthwise')(x)
x = BatchNormalization(name=prefix + '_depthwise_BN', epsilon=epsilon)(x)
if depth_activation:
x = Activation('relu')(x)
x = Conv2D(filters, (1, 1), padding='same',
use_bias=False, name=prefix + '_pointwise')(x)
x = BatchNormalization(name=prefix + '_pointwise_BN', epsilon=epsilon)(x)
if depth_activation:
x = Activation('relu')(x)
return x
示例8: _inverted_res_block
# 需要导入模块: from keras import layers [as 别名]
# 或者: from keras.layers import DepthwiseConv2D [as 别名]
def _inverted_res_block(inputs, expansion, stride, alpha, filters, block_id, skip_connection, rate=1):
in_channels = inputs._keras_shape[-1]
pointwise_conv_filters = int(filters * alpha)
pointwise_filters = _make_divisible(pointwise_conv_filters, 8)
x = inputs
prefix = 'expanded_conv_{}_'.format(block_id)
if block_id:
# Expand
x = Conv2D(expansion * in_channels, kernel_size=1, padding='same',
use_bias=False, activation=None,
name=prefix + 'expand')(x)
x = BatchNormalization(epsilon=1e-3, momentum=0.999,
name=prefix + 'expand_BN')(x)
x = Activation(relu6, name=prefix + 'expand_relu')(x)
else:
prefix = 'expanded_conv_'
# Depthwise
x = DepthwiseConv2D(kernel_size=3, strides=stride, activation=None,
use_bias=False, padding='same', dilation_rate=(rate, rate),
name=prefix + 'depthwise')(x)
x = BatchNormalization(epsilon=1e-3, momentum=0.999,
name=prefix + 'depthwise_BN')(x)
x = Activation(relu6, name=prefix + 'depthwise_relu')(x)
# Project
x = Conv2D(pointwise_filters,
kernel_size=1, padding='same', use_bias=False, activation=None,
name=prefix + 'project')(x)
x = BatchNormalization(epsilon=1e-3, momentum=0.999,
name=prefix + 'project_BN')(x)
if skip_connection:
return Add(name=prefix + 'add')([inputs, x])
# if in_channels == pointwise_filters and stride == 1:
# return Add(name='res_connect_' + str(block_id))([inputs, x])
return x
示例9: __init__
# 需要导入模块: from keras import layers [as 别名]
# 或者: from keras.layers import DepthwiseConv2D [as 别名]
def __init__(self, model):
super(Keras2Parser, self).__init__()
# load model files into Keras graph
if isinstance(model, _string_types):
try:
# Keras 2.1.6
from keras.applications.mobilenet import relu6
from keras.applications.mobilenet import DepthwiseConv2D
model = _keras.models.load_model(
model,
custom_objects={
'relu6': _keras.applications.mobilenet.relu6,
'DepthwiseConv2D': _keras.applications.mobilenet.DepthwiseConv2D
}
)
except:
# Keras. 2.2.2
import keras.layers as layers
model = _keras.models.load_model(
model,
custom_objects={
'relu6': layers.ReLU(6, name='relu6'),
'DepthwiseConv2D': layers.DepthwiseConv2D
}
)
self.weight_loaded = True
elif isinstance(model, tuple):
model = self._load_model(model[0], model[1])
else:
assert False
# _keras.utils.plot_model(model, "model.png", show_shapes = True)
# Build network graph
self.data_format = _keras.backend.image_data_format()
self.keras_graph = Keras2Graph(model)
self.keras_graph.build()
self.lambda_layer_count = 0
示例10: _emit_convolution
# 需要导入模块: from keras import layers [as 别名]
# 或者: from keras.layers import DepthwiseConv2D [as 别名]
def _emit_convolution(self, IR_node, conv_type):
self.used_layers.add('Conv')
# assert IR_node.get_attr('group', 1) == 1
group = IR_node.get_attr("group", 1)
if conv_type.endswith('Transpose'):
filters = IR_node.get_attr('kernel_shape')[-2]
else:
filters = IR_node.get_attr('kernel_shape')[-1]
filters_str = 'filters={}'.format(filters) if not conv_type.endswith('DepthwiseConv2D') else 'depth_multiplier={}'.format(filters)
# change dw from filters to 1
input_node, padding = self._defuse_padding(IR_node)
dilations = IR_node.get_attr('dilations')
if not dilations or len(dilations) == 2:
# reset the default dilation
dilations = [1] * len(IR_node.get_attr('kernel_shape'))
code = "{:<15} = convolution(weights_dict, name='{}', input={}, group={}, conv_type='{}', {}, kernel_size={}, strides={}, dilation_rate={}, padding='{}', use_bias={})".format(
IR_node.variable_name,
IR_node.name,
input_node,
group,
conv_type,
filters_str,
tuple(IR_node.get_attr('kernel_shape')[:-2]),
tuple(IR_node.get_attr('strides')[1:-1]),
tuple(dilations[1:-1]),
padding,
IR_node.get_attr('use_bias'))
return code
示例11: emit_DepthwiseConv
# 需要导入模块: from keras import layers [as 别名]
# 或者: from keras.layers import DepthwiseConv2D [as 别名]
def emit_DepthwiseConv(self, IR_node, in_scope=False):
try:
from keras.applications.mobilenet import DepthwiseConv2D
return self._emit_convolution(IR_node, 'keras.applications.mobilenet.DepthwiseConv2D')
except:
return self._emit_convolution(IR_node, 'layers.DepthwiseConv2D')
示例12: _layer_Conv
# 需要导入模块: from keras import layers [as 别名]
# 或者: from keras.layers import DepthwiseConv2D [as 别名]
def _layer_Conv(self):
self.add_body(0, """
def convolution(weights_dict, name, input, group, conv_type, filters=None, **kwargs):
if not conv_type.startswith('layer'):
layer = keras.applications.mobilenet.DepthwiseConv2D(name=name, **kwargs)(input)
return layer
elif conv_type == 'layers.DepthwiseConv2D':
layer = layers.DepthwiseConv2D(name=name, **kwargs)(input)
return layer
inp_filters = K.int_shape(input)[-1]
inp_grouped_channels = int(inp_filters / group)
out_grouped_channels = int(filters / group)
group_list = []
if group == 1:
func = getattr(layers, conv_type.split('.')[-1])
layer = func(name = name, filters = filters, **kwargs)(input)
return layer
weight_groups = list()
if not weights_dict == None:
w = np.array(weights_dict[name]['weights'])
weight_groups = np.split(w, indices_or_sections=group, axis=-1)
for c in range(group):
x = layers.Lambda(lambda z: z[..., c * inp_grouped_channels:(c + 1) * inp_grouped_channels])(input)
x = layers.Conv2D(name=name + "_" + str(c), filters=out_grouped_channels, **kwargs)(x)
weights_dict[name + "_" + str(c)] = dict()
weights_dict[name + "_" + str(c)]['weights'] = weight_groups[c]
group_list.append(x)
layer = layers.concatenate(group_list, axis = -1)
if 'bias' in weights_dict[name]:
b = K.variable(weights_dict[name]['bias'], name = name + "_bias")
layer = layer + b
return layer""")
示例13: load_model
# 需要导入模块: from keras import layers [as 别名]
# 或者: from keras.layers import DepthwiseConv2D [as 别名]
def load_model(self):
global Graph # multiprocess-able
config = tf.ConfigProto()
config.gpu_options.allow_growth = True
config.gpu_options.per_process_gpu_memory_fraction = 0.3
set_session(tf.Session(config=config))
# model.99-0.98.h5
files = glob.glob('models/{}/model.*.h5'.format(self.model_name))
if len(files) == 0:
print('Trained model not found from "models/{}/model.*.h5"'.format(self.model_name))
print('Building new model because model file not found...')
return self.build_model(self.kernel, self.stride)
last_file = max(files, key=os.path.getctime)
file_name = last_file.replace('\\', '/').split('/')[-1].replace('model.', '').replace('.h5', '')
self.epoch = int(file_name.split('-')[0])
acc = float(file_name.split('-')[1])
with CustomObjectScope({'relu6': tf.nn.relu6, 'DepthwiseConv2D': keras.layers.DepthwiseConv2D, 'tf': tf}):
model = load_model(last_file)
model.summary()
Graph = tf.get_default_graph()
print('Loaded last model - {}, epoch: {}, acc: {}'.format(last_file, self.epoch, acc))
return model
示例14: _bottleneck
# 需要导入模块: from keras import layers [as 别名]
# 或者: from keras.layers import DepthwiseConv2D [as 别名]
def _bottleneck(inputs, filters, kernel, t, s, r=False):
"""Bottleneck
This function defines a basic bottleneck structure.
# Arguments
inputs: Tensor, input tensor of conv layer.
filters: Integer, the dimensionality of the output space.
kernel: An integer or tuple/list of 2 integers, specifying the
width and height of the 2D convolution window.
t: Integer, expansion factor.
t is always applied to the input size.
s: An integer or tuple/list of 2 integers,specifying the strides
of the convolution along the width and height.Can be a single
integer to specify the same value for all spatial dimensions.
r: Boolean, Whether to use the residuals.
# Returns
Output tensor.
"""
channel_axis = 1 if K.image_data_format() == 'channels_first' else -1
tchannel = K.int_shape(inputs)[channel_axis] * t
x = _conv_block(inputs, tchannel, (1, 1), (1, 1))
x = Dist(DepthwiseConv2D(kernel, strides=(s, s), depth_multiplier=1, padding='same'))(x)
x = Dist(BatchNormalization(axis=channel_axis))(x)
x = Dist(Activation(relu6))(x)
x = Dist(Conv2D(filters, (1, 1), strides=(1, 1), padding='same'))(x)
x = Dist(BatchNormalization(axis=channel_axis))(x)
if r:
x = add([x, inputs])
return x
示例15: test_tiny_depthwise_conv_same_pad_depth_multiplier
# 需要导入模块: from keras import layers [as 别名]
# 或者: from keras.layers import DepthwiseConv2D [as 别名]
def test_tiny_depthwise_conv_same_pad_depth_multiplier(self):
np.random.seed(1988)
input_dim = 16
input_shape = (input_dim, input_dim, 3)
depth_multiplier = 4
kernel_height = 3
kernel_width = 3
# Define a model
model = Sequential()
model.add(DepthwiseConv2D(depth_multiplier=depth_multiplier, kernel_size=(kernel_height, kernel_width),
input_shape=input_shape, padding='same', strides=(1, 1)))
# Set some random weights
model.set_weights([np.random.rand(*w.shape) for w in model.get_weights()])
# Test the keras model
self._test_keras_model(model)