Skip to content

Commit 1651ff9

Browse files
committed
Added SeLU and ZeroPadding layers.
1 parent 5b10be1 commit 1651ff9

File tree

1 file changed

+54
-0
lines changed

1 file changed

+54
-0
lines changed

pytorch2keras/layers.py

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -552,6 +552,26 @@ def convert_tanh(params, w_name, scope_name, inputs, layers, weights):
552552
layers[scope_name] = tanh(layers[inputs[0]])
553553

554554

555+
def convert_selu(params, w_name, scope_name, inputs, layers, weights):
556+
"""
557+
Convert selu layer.
558+
559+
Args:
560+
params: dictionary with layer parameters
561+
w_name: name prefix in state_dict
562+
scope_name: pytorch scope name
563+
inputs: pytorch node inputs
564+
layers: dictionary with keras tensors
565+
weights: pytorch state_dict
566+
"""
567+
print('Converting selu ...')
568+
569+
tf_name = w_name + str(random.random())
570+
selu = keras.layers.Activation('selu', name=tf_name)
571+
layers[scope_name] = selu(layers[inputs[0]])
572+
573+
574+
555575
def convert_transpose(params, w_name, scope_name, inputs, layers, weights):
556576
"""
557577
Convert transpose layer.
@@ -737,6 +757,38 @@ def convert_upsample(params, w_name, scope_name, inputs, layers, weights):
737757
layers[scope_name] = upsampling(layers[inputs[0]])
738758

739759

760+
def convert_padding(params, w_name, scope_name, inputs, layers, weights):
761+
"""
762+
Convert padding layer.
763+
764+
Args:
765+
params: dictionary with layer parameters
766+
w_name: name prefix in state_dict
767+
scope_name: pytorch scope name
768+
inputs: pytorch node inputs
769+
layers: dictionary with keras tensors
770+
weights: pytorch state_dict
771+
"""
772+
print('Converting padding...')
773+
774+
if params['mode'] != 'constant':
775+
raise AssertionError('Cannot convert non-constant padding')
776+
777+
if params['value'] != 0.0:
778+
raise AssertionError('Cannot convert non-zero padding')
779+
780+
tf_name = w_name + str(random.random())
781+
782+
# Magic ordering
783+
padding_name = tf_name + '_pad'
784+
padding_layer = keras.layers.ZeroPadding2D(
785+
padding=((params['pads'][2], params['pads'][6]), (params['pads'][3], params['pads'][7])),
786+
name=tf_name
787+
)
788+
789+
layers[scope_name] = padding_layer(layers[inputs[0]])
790+
791+
740792
AVAILABLE_CONVERTERS = {
741793
'onnx::Conv': convert_conv,
742794
'onnx::ConvTranspose': convert_convtranspose,
@@ -756,11 +808,13 @@ def convert_upsample(params, w_name, scope_name, inputs, layers, weights):
756808
'onnx::Sigmoid': convert_sigmoid,
757809
'onnx::Softmax': convert_softmax,
758810
'onnx::Tanh': convert_tanh,
811+
'onnx::Selu': convert_selu,
759812
'onnx::Transpose': convert_transpose,
760813
'onnx::Reshape': convert_reshape,
761814
'onnx::MatMul': convert_matmul,
762815
'onnx::Gather': convert_gather,
763816
'onnx::ReduceSum': convert_reduce_sum,
764817
'onnx::Constant': convert_constant,
765818
'onnx::Upsample': convert_upsample,
819+
'onnx::Pad': convert_padding,
766820
}

0 commit comments

Comments
 (0)