gpt4 book ai didi

c# - 在 Tensorflow.NET 中加载模型的最佳方式是什么

转载 作者:行者123 更新时间:2023-12-05 06:14:39 29 4
gpt4 key购买 nike

我在 python 中保存了一个 tensorflow.keras 模型,需要在 C#/Tensorflow.NET 0.15 中使用

var net = tf.keras.models.load_model(net_name) 好像没有实现

var session = tf.Session.LoadFromSavedModel(net_name);
var graph = sess.graph;

似乎有效,但我有一个 session /图表而不是 keras 模型

理想情况下,我想调用类似 net.predict(x) 的东西,我怎样才能从图形/ session 到达那里?

最佳答案

是的,我做到了。最好的方法是将您的包转换为 ONNX 格式。 ONNX 是一种开源格式,应该可以在任何框架(tensorflow、torch...)上运行

在 python 中,添加包 onnx 和 keras2onnx:

import onnx
import keras2onnx
import onnxruntime


net_onnx = keras2onnx.convert_keras(net_keras)

onnx.save_model(net_onnx, onnx_name)

然后在 C# .NET 中,安装 nuget Microsoft.ML。

var context = new MLContext();
var session = new InferenceSession(filename);
float[] sample;
int[] dims = new int[] { 1, sample_size};
var tensor = new DenseTensor<float>(sample,dims);
var xs = new List<NamedOnnxValue>()
{
NamedOnnxValue.CreateFromTensor<float>("dense_input", tensor),
};

using (var results = session.Run(xs))
{
// manipulate the results
}

请注意,您需要显式调用网络的第一层或输入层来传递样本。最好是在 Keras 中给它起一个好听的名字。您可以通过运行 net_keras.summary()

检查 python 中的名称

关于c# - 在 Tensorflow.NET 中加载模型的最佳方式是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62780009/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com