测试环境
visual studio 2017
window10 64位
测试步骤如下:
1 新建.net framework控制台项目,工程名称为TensorFlowNetDemo,.net framework的版本选4.7.2,如下图:
2 分别安装TensorFlow.NET包(先装)和SciSharp.TensorFlow.Redist(后装),它们之间版本兼容性不好,最好安装的版本与我的保持一致,不然报错到你怀疑人生。
2.1 在包管理器中搜素并安装TensorFlow.NET,这里的版本我选0.15.1,一开始选0.20.1后面程序会报错。如下图:
2.2 在包管理器中搜素并安装SciSharp.TensorFlow.Redist,这里我选择的版本为2.3.1,如下图:
3 项目数字的目标平台选x64,如下图:
4 在主程序编写代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static Tensorflow.Binding;
namespace TensorFlowNetDemo
{
class Program
{
static void Main(string[] args)
{
var str = "Hello,TensorFlow.NET";
//创建常量
var hello = tf.constant(str);
//启动TensorFlow的会话
using (var sess = tf.Session())
{
//运行OP节点
var result = sess.run(hello);
var output = UTF8Encoding.UTF8.GetString((byte[])result);
//输出结果
Console.WriteLine(output);
}
Console.Read();
}
}
}
运行结果如下:
可能会出现的错误:
1 未处理的异常:System.TypeInitializationException:Tensorflow.Binding的类型初始值定项引发异常。
DLLNotFoundException:无法加载DLL"tensorflow":找不到只当的模块。(异常来自HRESULT:0x8007007E)
解决方案如下:
手动复制"tensorflow.dll"文件到Debug目录下,tensorflow.dll文件在 工程目录\packages\\SciSharp.TensorFlow.Redist.2.3.1\runtimes\win-x64\native目录下,如下图:
2 在tf.constanct(str)报未能将对象引用到实例,应该是TensorFlow.NET包和SciSharp.TensorFlow.Redist包的版本对应不上,应该多尝试TensorFlow.NET的版本,直到不报错为止