Невозможно импортировать модель keras (созданную на python) в matlab - несуществующее поле «имя_класса»

1

Я пытаюсь импортировать мою модель, используя этот код:

% 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?

Буду признателен за любую помощь.

Теги:
keras
neural-network

1 ответ

1

Ваша "keras_version": "2.2.4". Изменение на 2.1.2 может решить эту проблему.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню