我学习了这个教程 https://www.tensorflow.org/tutorials/generative/cyclegan,完成的模型在Windows上运行良好。然后我将这个tf模型转换为mlmodel,但模型的输出(多维数组)形状为空。我该如何解决这个问题…?(这个模型的EPOCH为1)
电脑配置::: Windows10 / TensorFlow和-gpu 2.2 / tfcoreml 1.1
这是转换代码
import tfcoremlimport coremltoolsfrom tensorflow import kerassaved_model = keras.models.load_model('saved_model')# get input, output node names for the TF graph from the Keras modelinput_name = (saved_model.inputs[0].name.split(':')[0])[0:7]keras_output_node_name = saved_model.outputs[0].name.split(':')[0]graph_output_node_name = keras_output_node_name.split('/')[-1]# Saving the Core ML model to a file.model = tfcoreml.convert('saved_model', image_input_names=input_name, input_name_shape_dict={input_name: [1, 540, 540, 3]}, output_feature_names=[graph_output_node_name], minimum_ios_deployment_target='13', red_bias=-123.68, green_bias=-116.78, blue_bias=-103.94)model.save('./saved_mlmodel/saved_model.mlmodel')
这是saved_model.summary
Model: "model_1"__________________________________________________________________________________________________Layer (type) Output Shape Param # Connected to ==================================================================================================input_2 (InputLayer) [(None, None, None, 0 __________________________________________________________________________________________________sequential_15 (Sequential) (None, None, None, 6 3072 input_2[0][0] __________________________________________________________________________________________________sequential_16 (Sequential) (None, None, None, 1 131328 sequential_15[0][0] __________________________________________________________________________________________________sequential_17 (Sequential) (None, None, None, 2 524800 sequential_16[0][0] __________________________________________________________________________________________________sequential_18 (Sequential) (None, None, None, 5 2098176 sequential_17[0][0] __________________________________________________________________________________________________sequential_19 (Sequential) (None, None, None, 5 4195328 sequential_18[0][0] __________________________________________________________________________________________________sequential_20 (Sequential) (None, None, None, 5 4195328 sequential_19[0][0] __________________________________________________________________________________________________sequential_21 (Sequential) (None, None, None, 5 4195328 sequential_20[0][0] __________________________________________________________________________________________________sequential_22 (Sequential) (None, None, None, 5 4195328 sequential_21[0][0] __________________________________________________________________________________________________sequential_23 (Sequential) (None, None, None, 5 4195328 sequential_22[0][0] __________________________________________________________________________________________________concatenate_1 (Concatenate) multiple 0 sequential_23[0][0] sequential_21[0][0] sequential_24[0][0] sequential_20[0][0] sequential_25[0][0] sequential_19[0][0] sequential_26[0][0] sequential_18[0][0] sequential_27[0][0] sequential_17[0][0] sequential_28[0][0] sequential_16[0][0] sequential_29[0][0] sequential_15[0][0] __________________________________________________________________________________________________sequential_24 (Sequential) (None, None, None, 5 8389632 concatenate_1[0][0] __________________________________________________________________________________________________sequential_25 (Sequential) (None, None, None, 5 8389632 concatenate_1[1][0] __________________________________________________________________________________________________sequential_26 (Sequential) (None, None, None, 5 8389632 concatenate_1[2][0] __________________________________________________________________________________________________sequential_27 (Sequential) (None, None, None, 2 4194816 concatenate_1[3][0] __________________________________________________________________________________________________sequential_28 (Sequential) (None, None, None, 1 1048832 concatenate_1[4][0] __________________________________________________________________________________________________sequential_29 (Sequential) (None, None, None, 6 262272 concatenate_1[5][0] __________________________________________________________________________________________________conv2d_transpose_15 (Conv2DTran (None, None, None, 3 6147 concatenate_1[6][0] ==================================================================================================Total params: 54,414,979Trainable params: 54,414,979Non-trainable params: 0
这是mlmodel.spec描述
input { name: "input_2" type { imageType { width: 540 height: 540 colorSpace: RGB } }}output { name: "Identity" type { multiArrayType { dataType: FLOAT32 } }}metadata { userDefined { key: "coremltoolsVersion" value: "3.4" }}
回答:
这通常不是问题。当你运行模型时,你仍然会得到正确形状的多维数组。
如果你已经知道形状,你可以填写它,以便它显示在mlmodel文件中,但这更多是为了文档目的,而不是其他任何事情。