Open
Description
Ask a Question
Question
The LayerNormalization was translate to some operators and BatchNormalization, when I use opset=17。
I hope it could be a unique operator rather than a series of operator list like this:
any parameter should I add?
here is my code :
`
class Test_Model(tf.keras.Model):
def __init__(self):
super(Test_Model, self).__init__()
self.input_layer = tf.keras.layers.Input((1,256,1))
self.conv1 = layers.Conv2D(128, (1, 3), activation='relu',padding='same')
self.norm1 = layers.LayerNormalization(axis=-1)
self.conv2 = layers.Conv2D(64, (1, 4), activation='relu',padding='same')
self.norm2 = layers.LayerNormalization(axis=3)
def call(self, inputs):
x = self.conv1(inputs)
x = self.norm1(x)
x = self.conv2(x)
x = self.norm2(x)
return x
input_shape = [1, 1, 256, 1]
inputs = tf.random.uniform(input_shape)
model = Test_Model()
model(inputs)
model.summary()
onnx_model, _ = tf2onnx.convert.from_keras(model,opset=18)
new_model = onnxoptimizer.optimize(onnx_model)
inferred_model = onnx.shape_inference.infer_shapes(new_model)
onnx_name = r'./models/operators/layer_norm_tf' + '.onnx'
onnx.save_model(inferred_model, onnx_name)
`