通过使用C#.net核心中的现有文件重新训练新的Tensorflow模型文件以生成新模型

问题描述

在图像分类程序中使用预先训练的TensorFlow模态,除了我尝试通过训练后的数据生成新的模型文件以用于将来的预测时,它工作正常。.(original.pb +训练后的数据= myNewModel.pb)

这是模型生成方法

public static ITransformer GenerateModel(MLContext mlContext)
            {
                TensorFlowModel tensorFlowModel = mlContext.Model.LoadTensorFlowModel("original.pb");
                IEstimator<ITransformer> pipeline = mlContext.Transforms.LoadImages(outputColumnName: "input",imageFolder: _imagesFolder,inputColumnName: nameof(ImageData.ImagePath))   
                    .Append(mlContext.Transforms.ResizeImages(outputColumnName: "input",imageWidth: InceptionSettings.ImageWidth,imageHeight: InceptionSettings.ImageHeight,inputColumnName: "input"))
                    .Append(mlContext.Transforms.ExtractPixels(outputColumnName: "input",interleavePixelColors: InceptionSettings.ChannelsLast,offsetimage: InceptionSettings.Mean))
                    .Append(tensorFlowModel.
        scoreTensorFlowModel(outputColumnNames: new[] { "softmax2_pre_activation" },inputColumnNames: new[] { "input" },addBatchDimensionInput: true))
                    .Append(mlContext.Transforms.Conversion.MapValuetoKey(outputColumnName: "LabelKey",inputColumnName: "Label"))
.Append(mlContext.MulticlassClassification.Trainers.LbfgsMaximumEntropy(labelColumnName: "LabelKey",featureColumnName: "softmax2_pre_activation"))
                    .Append(mlContext.Transforms.Conversion.MapKeyTovalue("PredictedLabelValue","PredictedLabel"))
    .AppendCacheCheckpoint(mlContext);
    
                IDataView trainingData = mlContext.Data.LoadFromTextFile<ImageData>(path: _trainTagsTsv,hasHeader: false);
                ITransformer model = pipeline.Fit(trainingData);
    
                IDataView testData = mlContext.Data.LoadFromTextFile<ImageData>(path: _testTagsTsv,hasHeader: false);
                IDataView predictions = model.Transform(testData);
    
                IEnumerable<ImagePrediction> imagePredictionData = mlContext.Data.CreateEnumerable<ImagePrediction>(predictions,true);
                displayResults(imagePredictionData);
    
                mlContext.Model.Save(model,tensorFlowModel.GetModelSchema(),filePath: "myNewModel.pb");
    
                //line below throws `Invalid GraphDef` exception
                TensorFlowModel newTensorFlowM= mlContext.Model.LoadTensorFlowModel("myNewModel.pb"); 

当上面的运行方法我看到如图所示的错误

enter image description here

原因很明显,.pb文件的格式无效,但是我只是使用与原始文件相同的架构创建的,在这里有什么处理?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)