Я пытаюсь импортировать свою модель, используя этот код:
% Number of classes
classnames={'0','1','2','3','4','5','6','7','8'};
% Load model into Matlab
% net = importKerasNetwork(netfile);
netxx = importKerasNetwork('model.json','WeightFile','model.h5', 'classnames', classnames,'OutputLayerType','classification');
, и я получаю следующую ошибку:
>> load_keras_network_from_py
Error using importKerasNetwork (line 86)
Reference to non-existent field 'class_name'.
Error in load_keras_network_from_py (line 20)
netxx = importKerasNetwork('model.json','WeightFile','model.h5', 'classnames',
classnames,'OutputLayerType','classification');
Вот структура моей модели в JSON, которую яя пытаюсь импортировать в MATLAB:
{
"class_name":"Sequential",
"config":{
"name":"sequential_1",
"layers":[
{
"class_name":"Conv2D",
"config":{
"name":"conv2d_1",
"trainable":true,
"batch_input_shape":[
null,
128,
128,
3
],
"dtype":"float32",
"filters":32,
"kernel_size":[
3,
3
],
"strides":[
1,
1
],
"padding":"valid",
"data_format":"channels_last",
"dilation_rate":[
1,
1
],
"activation":"relu",
"use_bias":true,
"kernel_initializer":{
"class_name":"VarianceScaling",
"config":{
"scale":1.0,
"mode":"fan_avg",
"distribution":"uniform",
"seed":null
}
},
"bias_initializer":{
"class_name":"Zeros",
"config":{
}
},
"kernel_regularizer":null,
"bias_regularizer":null,
"activity_regularizer":null,
"kernel_constraint":null,
"bias_constraint":null
}
},
{
"class_name":"MaxPooling2D",
"config":{
"name":"max_pooling2d_1",
"trainable":true,
"pool_size":[
2,
2
],
"padding":"valid",
"strides":[
2,
2
],
"data_format":"channels_last"
}
},
{
"class_name":"Conv2D",
"config":{
"name":"conv2d_2",
"trainable":true,
"filters":32,
"kernel_size":[
3,
3
],
"strides":[
1,
1
],
"padding":"valid",
"data_format":"channels_last",
"dilation_rate":[
1,
1
],
"activation":"relu",
"use_bias":true,
"kernel_initializer":{
"class_name":"VarianceScaling",
"config":{
"scale":1.0,
"mode":"fan_avg",
"distribution":"uniform",
"seed":null
}
},
"bias_initializer":{
"class_name":"Zeros",
"config":{
}
},
"kernel_regularizer":null,
"bias_regularizer":null,
"activity_regularizer":null,
"kernel_constraint":null,
"bias_constraint":null
}
},
{
"class_name":"MaxPooling2D",
"config":{
"name":"max_pooling2d_2",
"trainable":true,
"pool_size":[
2,
2
],
"padding":"valid",
"strides":[
2,
2
],
"data_format":"channels_last"
}
},
{
"class_name":"Conv2D",
"config":{
"name":"conv2d_3",
"trainable":true,
"filters":64,
"kernel_size":[
3,
3
],
"strides":[
1,
1
],
"padding":"valid",
"data_format":"channels_last",
"dilation_rate":[
1,
1
],
"activation":"relu",
"use_bias":true,
"kernel_initializer":{
"class_name":"VarianceScaling",
"config":{
"scale":1.0,
"mode":"fan_avg",
"distribution":"uniform",
"seed":null
}
},
"bias_initializer":{
"class_name":"Zeros",
"config":{
}
},
"kernel_regularizer":null,
"bias_regularizer":null,
"activity_regularizer":null,
"kernel_constraint":null,
"bias_constraint":null
}
},
{
"class_name":"MaxPooling2D",
"config":{
"name":"max_pooling2d_3",
"trainable":true,
"pool_size":[
2,
2
],
"padding":"valid",
"strides":[
2,
2
],
"data_format":"channels_last"
}
},
{
"class_name":"Flatten",
"config":{
"name":"flatten_1",
"trainable":true,
"data_format":"channels_last"
}
},
{
"class_name":"Dense",
"config":{
"name":"dense_1",
"trainable":true,
"units":128,
"activation":"relu",
"use_bias":true,
"kernel_initializer":{
"class_name":"VarianceScaling",
"config":{
"scale":1.0,
"mode":"fan_avg",
"distribution":"uniform",
"seed":null
}
},
"bias_initializer":{
"class_name":"Zeros",
"config":{
}
},
"kernel_regularizer":null,
"bias_regularizer":null,
"activity_regularizer":null,
"kernel_constraint":null,
"bias_constraint":null
}
},
{
"class_name":"Dense",
"config":{
"name":"dense_2",
"trainable":true,
"units":1,
"activation":"softmax",
"use_bias":true,
"kernel_initializer":{
"class_name":"VarianceScaling",
"config":{
"scale":1.0,
"mode":"fan_avg",
"distribution":"uniform",
"seed":null
}
},
"bias_initializer":{
"class_name":"Zeros",
"config":{
}
},
"kernel_regularizer":null,
"bias_regularizer":null,
"activity_regularizer":null,
"kernel_constraint":null,
"bias_constraint":null
}
}
]
},
"keras_version":"2.2.4",
"backend":"tensorflow"
}
Я пробовал несколько подходов для решения этой проблемы (включая импорт файла h5 вместо JSON), но я буквально понятия не имею, почему это происходит ...Существуют ли дополнительные ограничения при сохранении модели keras с помощью Python, чтобы она работала на matlab?
Буду признателен за любую помощь.