Выходная форма mlmodel пуста. Почему форма пуста?

Я изучаю этот учебник https://www.tensorflow.org/tutorials/generative/cyclegan И готовая модель хорошо проработана на окнах. Затем я конвертирую эту модель tf в mlmodel, но выход модели (MultyArray) имеет пустую форму. Как мне решить эту проблему...? (ЭПОХА этой модели равна 1)

компьютер:::windows10/tensorflow и -gpu 2.2/tfcoreml 1.1

это код конвертации

import tfcoreml
import coremltools
from tensorflow import keras

saved_model = keras.models.load_model('saved_model')
# get input, output node names for the TF graph from the Keras model
input_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')

это save_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,979
Trainable params: 54,414,979
Non-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"
  }
}

person Running    schedule 11.06.2020    source источник


Ответы (1)


Обычно это не проблема. Когда вы запускаете модель, вы все равно получаете мультимассив правильной формы.

Если вы уже знаете форму, вы можете заполнить ее, чтобы она отображалась в файле mlmodel, но это больше для целей документации, чем для чего-либо еще.

person Matthijs Hollemans    schedule 12.06.2020
comment
Спасибо за помощь!! Я получил прогнозируемый результат на mlmodel, тогда как преобразовать его в изображение..? могу ли я получить полезный сайт для этого ?? кстати Есть ли разница между MLMultiarray и Multiarray на coreml?? - person Running; 12.06.2020
comment
MLMultiArray — это имя класса, используемое Core ML, но в других местах оно называется MultiArray. Это то же самое. Здесь, на StackOverflow, есть несколько ответов о том, как преобразовать вывод в изображение (плюс вы можете ознакомиться с моей книгой). Лучший способ — сообщить mlmodel, что на выходе должно быть изображение, а не MultiArray. - person Matthijs Hollemans; 12.06.2020
comment
Я изменил выходное описание моей модели мл, которое соответствует входному описанию. :: ширина: 540, высота: 540, colorSpace: RGB, но в xcode возникает ошибка. Домен ошибки = com.apple.CoreML Code = 1 Не удалось преобразовать выходной идентификатор в изображение UserInfo = {NSLocalizedDescription = Не удалось преобразовать выходной идентификатор в изображение , NSUnderlyingError=0x28324a310 {Домен ошибки=com.apple.CoreML Code=0 Недопустимая форма массива (768, 768, 3) для преобразования в серый цвет UserInfo={NSLocalizedDescription=Недопустимая форма массива (768, 768, 3) для преобразования в серый изображение}}} ошибка - person Running; 13.06.2020
comment
Подсказка в сообщении об ошибке: выход 768x768. - person Matthijs Hollemans; 13.06.2020
comment
Произошла ошибка перед завершением модели.... in: let result = try model.prediction(input_2: buffer(from: inputImage!)!).... функция буфера stackoverflow.com/questions/44462087/ func buffer ..... что случилось... - person Running; 15.06.2020