@@ -1562,6 +1562,11 @@ onnx.ProtoReader = class {
1562
1562
return new onnx . ProtoReader ( context , 'text' , 'model' ) ;
1563
1563
}
1564
1564
}
1565
+ const obj = context . peek ( 'json' ) ;
1566
+ if ( obj && ( obj . ir_version === undefined && obj . producer_name === undefined && ! Array . isArray ( obj . opset_import ) && ! Array . isArray ( obj . metadata_props ) ) &&
1567
+ ( obj . irVersion !== undefined || obj . producerName !== undefined || Array . isArray ( obj . opsetImport ) || Array . isArray ( obj . metadataProps ) || ( Array . isArray ( obj . graph ) && Array . isArray ( obj . graph . node ) ) ) ) {
1568
+ return new onnx . ProtoReader ( context , 'json' , 'model' ) ;
1569
+ }
1565
1570
return undefined ;
1566
1571
}
1567
1572
@@ -1588,6 +1593,17 @@ onnx.ProtoReader = class {
1588
1593
}
1589
1594
break ;
1590
1595
}
1596
+ case 'json' : {
1597
+ try {
1598
+ const obj = this . context . read ( 'json' ) ;
1599
+ this . model = onnx . proto . ModelProto . decodeJson ( obj ) ;
1600
+ this . format = `ONNX${ this . model . ir_version ? ` v${ this . model . ir_version } ` : '' } ` ;
1601
+ } catch ( error ) {
1602
+ const message = error && error . message ? error . message : error . toString ( ) ;
1603
+ throw new onnx . Error ( `File JSON format is not onnx.ModelProto (${ message . replace ( / \. $ / , '' ) } ).` ) ;
1604
+ }
1605
+ break ;
1606
+ }
1591
1607
case 'binary' : {
1592
1608
switch ( this . type ) {
1593
1609
case 'tensor' : {
@@ -1877,7 +1893,8 @@ onnx.JsonReader = class {
1877
1893
1878
1894
static open ( context ) {
1879
1895
const obj = context . peek ( 'json' ) ;
1880
- if ( obj && ( obj . irVersion !== undefined || obj . ir_Version !== undefined || ( obj . graph && Array . isArray ( obj . graph . node ) ) ) ) {
1896
+ if ( obj && obj . framework === undefined && obj . graph &&
1897
+ ( obj . ir_version !== undefined || obj . producer_name !== undefined || Array . isArray ( obj . opset_import ) ) ) {
1881
1898
return new onnx . JsonReader ( obj ) ;
1882
1899
}
1883
1900
return null ;
@@ -1886,145 +1903,20 @@ onnx.JsonReader = class {
1886
1903
constructor ( obj ) {
1887
1904
this . name = 'onnx.json' ;
1888
1905
this . model = obj ;
1889
- this . _attributeTypes = new Map ( Object . entries ( onnx . AttributeType ) ) ;
1890
1906
}
1891
1907
1892
1908
async read ( ) {
1893
1909
this . model = this . _model ( this . model ) ;
1894
1910
this . format = `ONNX JSON${ this . model . ir_version ? ` v${ this . model . ir_version } ` : '' } ` ;
1895
1911
}
1896
1912
1897
- _tensor_shape ( value ) {
1898
- if ( Array . isArray ( value . dim ) ) {
1899
- for ( const dimension of value . dim ) {
1900
- if ( dimension . dimValue !== undefined ) {
1901
- dimension . dim_value = parseInt ( dimension . dimValue , 10 ) ;
1902
- delete dimension . dimValue ;
1903
- } else if ( dimension . dimParam !== undefined ) {
1904
- dimension . dim_param = dimension . dimParam ;
1905
- delete dimension . dimParam ;
1906
- }
1907
- }
1908
- }
1909
- return value ;
1910
- }
1911
-
1912
- _tensor_type ( value ) {
1913
- if ( value . elemType !== undefined ) {
1914
- value . elem_type = value . elemType ;
1915
- delete value . elemType ;
1916
- }
1917
- if ( value . shape ) {
1918
- value . shape = this . _tensor_shape ( value . shape ) ;
1919
- }
1920
- return value ;
1921
- }
1922
-
1923
- _optional_type ( value ) {
1924
- if ( value . elemType !== undefined ) {
1925
- value . elem_type = this . _type ( value . elemType ) ;
1926
- delete value . elemType ;
1927
- }
1928
- return value ;
1929
- }
1930
-
1931
- _sequence_type ( value ) {
1932
- if ( value . elemType !== undefined ) {
1933
- value . elem_type = this . _type ( value . elemType ) ;
1934
- delete value . elemType ;
1935
- }
1936
- return value ;
1937
- }
1938
-
1939
- _map_type ( value ) {
1940
- if ( value . keyType !== undefined ) {
1941
- value . key_type = value . keyType ;
1942
- delete value . keyType ;
1943
- }
1944
- if ( value . valueType !== undefined ) {
1945
- value . value_type = this . _type ( value . valueType ) ;
1946
- delete value . valueType ;
1947
- }
1948
- return value ;
1949
- }
1950
-
1951
- _sparse_tensor_type ( value ) {
1952
- if ( value . elemType !== undefined ) {
1953
- value . elem_type = value . elemType ;
1954
- delete value . elemType ;
1955
- }
1956
- if ( value . shape ) {
1957
- value . shape = this . _tensor_shape ( value . shape ) ;
1958
- }
1959
- return value ;
1960
- }
1961
-
1962
- _type ( value ) {
1963
- if ( value . tensorType ) {
1964
- value . tensor_type = this . _tensor_type ( value . tensorType ) ;
1965
- delete value . tensorType ;
1966
- } else if ( value . tensor_type ) {
1967
- value . tensor_type = this . _tensor_type ( value . tensor_type ) ;
1968
- } else if ( value . sequenceType ) {
1969
- value . sequence_type = this . _sequence_type ( value . sequenceType ) ;
1970
- delete value . sequenceType ;
1971
- } else if ( value . sequence_type ) {
1972
- value . sequence_type = this . _sequence_type ( value . sequenceType ) ;
1973
- } else if ( value . optionalType !== undefined ) {
1974
- value . optional_type = this . _optional_type ( value . optionalType ) ;
1975
- delete value . optionalType ;
1976
- } else if ( value . optional_type ) {
1977
- value . optional_type = this . _optional_type ( value . optionalType ) ;
1978
- } else if ( value . mapType ) {
1979
- value . map_type = this . _map_type ( value . mapType ) ;
1980
- delete value . mapType ;
1981
- } else if ( value . map_type ) {
1982
- value . map_type = this . _map_type ( value . mapType ) ;
1983
- } else if ( value . sparseTensorType ) {
1984
- value . sparse_tensor_type = this . _sparse_tensor_type ( value . sparseTensorType ) ;
1985
- delete value . sparseTensorType ;
1986
- } else if ( value . sparse_tensor_type ) {
1987
- value . sparse_tensor_type = this . _sparse_tensor_type ( value . sparseTensorType ) ;
1988
- } else if ( Object . keys ( value ) . length > 0 ) {
1989
- throw new onnx . Error ( `Unsupported ONNX JSON type '${ JSON . stringify ( Object . keys ( value ) ) } '.` ) ;
1990
- }
1991
- return value ;
1992
- }
1993
-
1994
1913
_tensor ( value ) {
1995
- if ( value . dataType !== undefined ) {
1996
- value . data_type = value . dataType ;
1997
- delete value . dataType ;
1998
- }
1999
- value . dims = Array . isArray ( value . dims ) ? value . dims . map ( ( dim ) => parseInt ( dim , 10 ) ) : [ ] ;
1914
+ value . dims = Array . isArray ( value . dims ) ? value . dims : [ ] ;
2000
1915
if ( value . raw_data !== undefined ) {
2001
- if ( value . raw_data && value . raw_data instanceof Uint8Array === false &&
2002
- value . raw_data . type === 'Buffer' && Array . isArray ( value . raw_data . data ) ) {
1916
+ if ( value . raw_data && value . raw_data instanceof Uint8Array === false && value . raw_data . type === 'Buffer' && Array . isArray ( value . raw_data . data ) ) {
2003
1917
value . data_location = onnx . DataLocation . DEFAULT ;
2004
1918
value . raw_data = new Uint8Array ( value . raw_data . data ) ;
2005
1919
}
2006
- } else if ( value . rawData !== undefined ) {
2007
- value . data_location = onnx . DataLocation . DEFAULT ;
2008
- const data = atob ( value . rawData ) ;
2009
- const length = data . length ;
2010
- const array = new Uint8Array ( length ) ;
2011
- for ( let i = 0 ; i < length ; i ++ ) {
2012
- array [ i ] = data [ i ] . charCodeAt ( 0 ) ;
2013
- }
2014
- value . raw_data = array ;
2015
- delete value . rawData ;
2016
- } else if ( Array . isArray ( value . floatData ) ) {
2017
- value . data_location = onnx . DataLocation . DEFAULT ;
2018
- value . float_data = value . floatData ;
2019
- delete value . floatData ;
2020
- } else if ( Array . isArray ( value . int32Data ) ) {
2021
- value . data_location = onnx . DataLocation . DEFAULT ;
2022
- value . int32_data = value . int32Data ;
2023
- delete value . int32Data ;
2024
- } else if ( Array . isArray ( value . int64Data ) ) {
2025
- value . data_location = onnx . DataLocation . DEFAULT ;
2026
- value . int64_data = value . int64Data . map ( ( value ) => parseInt ( value , 10 ) ) ;
2027
- delete value . int64Data ;
2028
1920
} else if ( ( Array . isArray ( value . float_data ) && value . float_data . length > 0 ) ||
2029
1921
( Array . isArray ( value . int32_data ) && value . int32_data . length > 0 ) ||
2030
1922
( Array . isArray ( value . int64_data ) && value . int64_data . length > 0 ) ) {
@@ -2042,13 +1934,7 @@ onnx.JsonReader = class {
2042
1934
}
2043
1935
2044
1936
_attribute ( value ) {
2045
- if ( value . type && this . _attributeTypes . has ( value . type ) ) {
2046
- value . type = this . _attributeTypes . get ( value . type ) ;
2047
- }
2048
- if ( value . refAttrName ) {
2049
- value . ref_attr_name = value . refAttrName ;
2050
- delete value . refAttrName ;
2051
- } else if ( value . ref_attr_name ) {
1937
+ if ( value . ref_attr_name ) {
2052
1938
value . ref_attr_name = value . ref_attr_name . toString ( ) ;
2053
1939
} else if ( value . type === onnx . AttributeType . FLOATS || ( Array . isArray ( value . floats ) && value . floats . length > 0 ) ) {
2054
1940
value . floats = value . floats . map ( ( value ) => parseFloat ( value ) ) ;
@@ -2060,24 +1946,18 @@ onnx.JsonReader = class {
2060
1946
value . tensors = value . tensors . map ( ( value ) => this . _tensor ( value ) ) ;
2061
1947
} else if ( value . type === onnx . AttributeType . GRAPHS || ( Array . isArray ( value . graphs ) && value . graphs . length > 0 ) ) {
2062
1948
value . graphs = value . graphs . map ( ( value ) => this . _graph ( value ) ) ;
2063
- } else if ( value . type === onnx . AttributeType . SPARSE_TENSORS || ( Array . isArray ( value . sparseTensors ) && value . sparseTensors . length > 0 ) ) {
2064
- value . sparse_tensors = value . sparseTensors . map ( ( item ) => this . _sparse_tensor ( item ) ) ;
2065
- delete value . sparseTensors ;
2066
1949
} else if ( value . type === onnx . AttributeType . SPARSE_TENSORS || ( Array . isArray ( value . sparse_tensors ) && value . sparse_tensors . length > 0 ) ) {
2067
1950
value . sparse_tensors = value . sparse_tensors . map ( ( item ) => this . _sparse_tensor ( item ) ) ;
2068
1951
} else if ( value . type === onnx . AttributeType . FLOAT || value . f !== undefined ) {
2069
- value . f = parseFloat ( value . f ) ;
1952
+ // continue
2070
1953
} else if ( value . type === onnx . AttributeType . INT || value . i !== undefined ) {
2071
- value . i = parseInt ( value . i , 10 ) ;
1954
+ // continue
2072
1955
} else if ( value . type === onnx . AttributeType . STRING || value . s !== undefined ) {
2073
1956
value . s = atob ( value . s ) ;
2074
1957
} else if ( value . type === onnx . AttributeType . TENSOR || value . t !== undefined ) {
2075
1958
value . t = this . _tensor ( value . t ) ;
2076
1959
} else if ( value . type === onnx . AttributeType . GRAPH || value . g !== undefined ) {
2077
1960
value . g = this . _graph ( value . g ) ;
2078
- } else if ( value . type === onnx . AttributeType . SPARSE_TENSOR || value . sparseTensor !== undefined ) {
2079
- value . sparse_tensor = this . _sparse_tensor ( value . sparseTensor ) ;
2080
- delete value . sparseTensor ;
2081
1961
} else if ( value . type === onnx . AttributeType . SPARSE_TENSOR || value . sparse_tensor !== undefined ) {
2082
1962
value . sparse_tensor = this . _sparse_tensor ( value . sparse_tensor ) ;
2083
1963
} else {
@@ -2087,43 +1967,18 @@ onnx.JsonReader = class {
2087
1967
}
2088
1968
2089
1969
_node ( value ) {
2090
- if ( value . opType !== undefined ) {
2091
- value . op_type = value . opType ;
2092
- delete value . opType ;
2093
- }
2094
1970
value . input = Array . isArray ( value . input ) ? value . input : [ ] ;
2095
1971
value . output = Array . isArray ( value . output ) ? value . output : [ ] ;
2096
1972
value . attribute = Array . isArray ( value . attribute ) ? value . attribute . map ( ( value ) => this . _attribute ( value ) ) : [ ] ;
2097
1973
return value ;
2098
1974
}
2099
1975
2100
- _value_info ( value ) {
2101
- value . type = this . _type ( value . type ) ;
2102
- return value ;
2103
- }
2104
-
2105
- _operator_set ( value ) {
2106
- value . version = parseInt ( value . version , 10 ) ;
2107
- return value ;
2108
- }
2109
-
2110
1976
_graph ( value ) {
2111
1977
value . node = value . node . map ( ( value ) => this . _node ( value ) ) ;
2112
1978
value . initializer = Array . isArray ( value . initializer ) ? value . initializer . map ( ( value ) => this . _tensor ( value ) ) : [ ] ;
2113
- if ( Array . isArray ( value . sparseInitializer ) && value . sparseInitializer . length > 0 ) {
2114
- value . sparse_initializer = value . sparseInitializer . map ( ( item ) => this . _sparse_tensor ( item ) ) ;
2115
- delete value . sparseInitializer ;
2116
- } else if ( Array . isArray ( value . sparse_initializer ) && value . sparse_initializer . length > 0 ) {
2117
- value . sparse_initializer = value . sparseInitializer . map ( ( item ) => this . _sparse_tensor ( item ) ) ;
2118
- }
2119
- if ( Array . isArray ( value . valueInfo ) && value . valueInfo . length > 0 ) {
2120
- value . value_info = value . valueInfo . map ( ( item ) => this . _value_info ( item ) ) ;
2121
- delete value . valueInfo ;
2122
- } else if ( Array . isArray ( value . value_info ) && value . value_info . length > 0 ) {
2123
- value . value_info = value . value_info . map ( ( item ) => this . _value_info ( item ) ) ;
2124
- }
2125
- value . input = Array . isArray ( value . input ) ? value . input . map ( ( value ) => this . _value_info ( value ) ) : [ ] ;
2126
- value . output = Array . isArray ( value . output ) ? value . output . map ( ( value ) => this . _value_info ( value ) ) : [ ] ;
1979
+ value . sparse_initializer = Array . isArray ( value . sparse_initializer ) ? value . sparse_initializer . map ( ( item ) => this . _sparse_tensor ( item ) ) : [ ] ;
1980
+ value . input = Array . isArray ( value . input ) ? value . input : [ ] ;
1981
+ value . output = Array . isArray ( value . output ) ? value . output : [ ] ;
2127
1982
return value ;
2128
1983
}
2129
1984
@@ -2132,57 +1987,13 @@ onnx.JsonReader = class {
2132
1987
value . input = Array . isArray ( value . input ) ? value . input : [ ] ;
2133
1988
value . output = Array . isArray ( value . output ) ? value . output : [ ] ;
2134
1989
value . attribute = Array . isArray ( value . attribute ) ? value . attribute : [ ] ;
2135
- if ( Array . isArray ( value . attributeProto ) && value . attributeProto . length > 0 ) {
2136
- value . attribute_proto = value . attributeProto . map ( ( value ) => this . _attribute ( value ) ) ;
2137
- delete value . attributeProto ;
2138
- } else if ( Array . isArray ( value . attribute_proto ) && value . attribute_proto . length > 0 ) {
2139
- value . attribute_proto = value . attribute_proto . map ( ( value ) => this . _attribute ( value ) ) ;
2140
- }
2141
- if ( value . docString ) {
2142
- value . doc_string = value . docString ;
2143
- delete value . docString ;
2144
- }
1990
+ value . attribute_proto = Array . isArray ( value . attribute_proto ) ? value . attribute_proto . map ( ( value ) => this . _attribute ( value ) ) : [ ] ;
2145
1991
return value ;
2146
1992
}
2147
1993
2148
1994
_model ( value ) {
2149
- if ( value . irVersion !== undefined ) {
2150
- value . ir_version = parseInt ( value . irVersion , 10 ) ;
2151
- delete value . irVersion ;
2152
- }
2153
- if ( value . version !== undefined ) {
2154
- value . version = parseInt ( value . version , 10 ) ;
2155
- }
2156
- if ( value . producerName ) {
2157
- value . producer_name = value . producerName ;
2158
- delete value . producerName ;
2159
- }
2160
- if ( value . producerVersion ) {
2161
- value . producer_version = value . producerVersion ;
2162
- delete value . producerVersion ;
2163
- }
2164
- if ( value . modelVersion ) {
2165
- value . model_version = parseInt ( value . modelVersion , 10 ) ;
2166
- delete value . modelVersion ;
2167
- }
2168
- if ( value . docString ) {
2169
- value . doc_string = value . docString ;
2170
- delete value . docString ;
2171
- }
2172
1995
value . graph = this . _graph ( value . graph ) ;
2173
- if ( Array . isArray ( value . opsetImport ) && value . opsetImport . length > 0 ) {
2174
- value . opset_import = value . opsetImport . map ( ( item ) => this . _operator_set ( item ) ) ;
2175
- delete value . opsetImport ;
2176
- } else if ( Array . isArray ( value . opset_import ) && value . opset_import . length > 0 ) {
2177
- value . opset_import = value . opset_import . map ( ( item ) => this . _operator_set ( item ) ) ;
2178
- }
2179
- if ( Array . isArray ( value . metadataProps ) ) {
2180
- value . metadata_props = value . metadataProps ;
2181
- delete value . metadataProps ;
2182
- }
2183
- if ( Array . isArray ( value . functions ) ) {
2184
- value . functions = value . functions . map ( ( item ) => this . _function ( item ) ) ;
2185
- }
1996
+ value . functions = Array . isArray ( value . functions ) ? value . functions . map ( ( item ) => this . _function ( item ) ) : [ ] ;
2186
1997
return value ;
2187
1998
}
2188
1999
} ;
0 commit comments