1
1
import json
2
- from warnings import warn
3
2
4
3
import h5py
5
4
@@ -231,8 +230,8 @@ def parse_keras_model(model_arch, reader):
231
230
layer_config = model_arch ['config' ]
232
231
if 'layers' in layer_config : # Newer Keras versions have 'layers' in 'config' key
233
232
layer_config = layer_config ['layers' ]
233
+ # Sequential doesn't have InputLayer in TF < 2.3 (Keras 2.4.0)
234
234
if layer_config [0 ]['class_name' ] != 'InputLayer' :
235
- warn (DeprecationWarning ('keras < 2.4.0 (tf 2.3) is deprecated. Please use a newer version.' ))
236
235
input_layer = {}
237
236
input_layer ['name' ] = 'input1'
238
237
input_layer ['class_name' ] = 'InputLayer'
@@ -244,33 +243,25 @@ def parse_keras_model(model_arch, reader):
244
243
layer_config = model_arch ['config' ]['layers' ]
245
244
input_layers = [inp [0 ] for inp in model_arch ['config' ]['input_layers' ]]
246
245
output_layers = [out [0 ] for out in model_arch ['config' ]['output_layers' ]]
247
- else :
248
- raise Exception (f'ERROR: Model class not supported: { model_arch ["class_name" ]} ' )
249
246
250
247
# Get input shape and check for unsupported layer type
251
248
for keras_layer in layer_config :
252
249
if keras_layer ['class_name' ] not in supported_layers :
253
- raise Exception (f 'ERROR: Unsupported layer type: { keras_layer [" class_name" ] } ' )
250
+ raise Exception ('ERROR: Unsupported layer type: {}' . format ( keras_layer [' class_name' ]) )
254
251
255
252
output_shapes = {}
256
253
output_shape = None
257
254
258
255
print ('Topology:' )
259
256
for keras_layer in layer_config :
260
- if 'batch_input_shape' in keras_layer ['config' ] or 'batch_shape' in keras_layer [ 'config' ] :
257
+ if 'batch_input_shape' in keras_layer ['config' ]:
261
258
if 'inbound_nodes' in keras_layer and len (keras_layer ['inbound_nodes' ]) > 0 :
262
259
input_shapes = [output_shapes [inbound_node [0 ]] for inbound_node in keras_layer ['inbound_nodes' ][0 ]]
263
260
else :
264
- _input_shapes = keras_layer ['config' ].get ('batch_input_shape' , None )
265
- input_shapes = _input_shapes or keras_layer ['config' ]['batch_shape' ]
261
+ input_shapes = [keras_layer ['config' ]['batch_input_shape' ]]
266
262
else :
267
263
if 'inbound_nodes' in keras_layer :
268
- if 'args' in keras_layer ['inbound_nodes' ][0 ]:
269
- # keras v3
270
- input_shapes = [arg ['config' ]['shape' ] for arg in keras_layer ['inbound_nodes' ][0 ]['args' ]]
271
- else :
272
- # keras v2
273
- input_shapes = [output_shapes [inbound_node [0 ]] for inbound_node in keras_layer ['inbound_nodes' ][0 ]]
264
+ input_shapes = [output_shapes [inbound_node [0 ]] for inbound_node in keras_layer ['inbound_nodes' ][0 ]]
274
265
else :
275
266
# Sequential model, so output_shape from the previous layer is still valid
276
267
input_shapes = [output_shape ]
0 commit comments