|
a |
|
b/v3/py2tfjs/fixmodeljson.py |
|
|
1 |
import tensorflowjs as tfjs |
|
|
2 |
import json |
|
|
3 |
|
|
|
4 |
# After saving keras model with ZeroPadding3D as model.json Modify with this code: |
|
|
5 |
|
|
|
6 |
|
|
|
7 |
def fixjson_file(model_file, verbose=False, scube=38): |
|
|
8 |
# Open json file to modify |
|
|
9 |
with open(model_file) as f: |
|
|
10 |
model_dict = json.load(f) |
|
|
11 |
|
|
|
12 |
# Convert |
|
|
13 |
for layer in model_dict['modelTopology']['model_config']['config']['layers']: |
|
|
14 |
if layer['class_name'] == "ZeroPadding3D": |
|
|
15 |
model_dict['modelTopology']['model_config']['config']['layers'].remove(layer) |
|
|
16 |
|
|
|
17 |
prev_layer_name = "" |
|
|
18 |
for layer in model_dict['modelTopology']['model_config']['config']['layers']: |
|
|
19 |
if layer['class_name'] == "InputLayer": |
|
|
20 |
layer["config"]["batch_input_shape"] = [None, scube, scube, scube, 1] |
|
|
21 |
|
|
|
22 |
if layer['class_name'] == "Conv3D": |
|
|
23 |
layer["config"]["padding"] = "same" |
|
|
24 |
layer["config"]["data_format"] = "channels_last" |
|
|
25 |
layer['inbound_nodes'][0][0][0] = prev_layer_name |
|
|
26 |
|
|
|
27 |
prev_layer_name = layer["config"]["name"] |
|
|
28 |
|
|
|
29 |
if verbose: |
|
|
30 |
# Verification |
|
|
31 |
for layer in model_dict['modelTopology']['model_config']['config']['layers']: |
|
|
32 |
print(layer) |
|
|
33 |
print("-------------------------------------------------------") |
|
|
34 |
|
|
|
35 |
# Save model.json file |
|
|
36 |
with open(model_file, 'w') as fp: |
|
|
37 |
json.dump(model_dict, fp) |