3.5.2 使用JSON格式保存模型

JSON的格式很简单,在Keras中可以用model_to_json()把模型结构导出为JSON格式,再用model_from_json()函数加载到R中。

> # 保存JSON文件到磁盘中
> json_config <- model_to_json(model)
> writeLines(json_config,'models/model_config.json')
> # 将网络结构和权重值加载到新模型中
> rm(list='json_config')
> json_config <- readLines('models/model_config.json')
> new_model2 <- model_from_json(json_config)
> load_model_weights_hdf5(new_model2,'models/model_weights.h5')
> # 利用模型对新数据进行预测
> set.seed(1234)
> u <- as.matrix(data.frame('V1' = sample(X[,1],1),
+                'V2' = sample(X[,2],1),
+                'V3' = sample(X[,3],1),
+                'V4' = sample(X[,4],1),
+                'V5' = sample(X[,5],1),
+                'V6' = sample(X[,6],1),
+                'V7' = sample(X[,7],1),
+                'V8' = sample(X[,8],1)))
> predict(model,u)
          [,1]
[1,] 0.431296
> predict(reinitialized_model,u)
          [,1]
[1,] 0.431296
> predict(new_model2,u)
          [,1]
[1,] 0.431296

可见,此模型对新数据的预测结果与其他模型相同。注意,此模型优化器未保留,如果我们想重新进行模型训练,需在训练前利用compile()函数编译网络。

> # 重新训练模型
> new_model2 %>% fit(X,y)
Error in py_call_impl(callable, dots$args, dots$keywords) :
  RuntimeError: You must compile your model before training/testing. Use `model.compile(optimizer, loss)`.