




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第使用Java操作TensorFlow的方法目录简介TensorFlow为何物?张量与操作安装TensorFlowTensorFlow的JavaAPI类枚举接口异常图(Graphs)常量占位符函数图形可视化会话(Sessions)Java当中加载Python中Saving模块结论
简介
机器学习在全球范围内越来越受欢迎和使用。它已经彻底改变了某些应用程序的构建方式,并且可能会继续成为我们日常生活中一个巨大的(并且正在增加的)部分。
没有什么包装且机器学习并不简单。它对许多人来说似乎非常复杂并常常令人生畏。
像谷歌这样的公司将自己的机器学习概念与开发人员联系起来,在谷歌帮助下让他们逐渐迈出第一步,故TensorFlow的框架诞生了。
TensorFlow为何物?
TensorFlow是由谷歌使用Python和C++开发的开源机器学习框架。
它可以帮助开发人员轻松获取数据,准备和训练模型,预测未来状态,以及执行大规模机器学习。
有了它,我们可以训练和运行深度神经网络的内容,诸如光学字符识别,图像识别/分类,自然语言处理等。
张量与操作
TensorFlow基于计算图,你可以将其想象为具有节点和边的经典图。
每个节点被称为操作,它们将零个或多个张量输入并产生零个或多个张量输出。操作可以非常简单,例如基本的添加,但它们也可以非常复杂。
张量被描绘为图的边缘,并且是核心数据单元。当我们将它们提供给操作时,我们在这些张量上执行不同的功能。它们可以具有单个或多个维度,有时也称为它们的等级(标量:等级0,向量:等级1,矩阵:等级2)。
这些数据受到操作的影响通过张量传递到计算图中,故而称为TensorFlow。
张量可以以任意数量的维度存储数据,并且有三种主要类型的张量:占位符,变量和常量。
安装TensorFlow
使用Maven,安装TensorFlow就像包含依赖项一样简单:
dependency
groupIdorg.tensorflow/groupId
artifactIdtensorflow/artifactId
version1.15.0/version
/dependency
如果你的设备支持GPU功能,可以添加以下依赖:
dependency
groupIdorg.tensorflow/groupId
artifactIdlibtensorflow/artifactId
version1.15.0/version
/dependency
dependency
groupIdorg.tensorflow/groupId
artifactIdlibtensorflow_jni_gpu/artifactId
version1.15.0/version
/dependency
你可以使用TensorFlow对象来检查当前操作的TensorFlow的版本。
System.out.println(TensorFlow.version());
TensorFlow的JavaAPI
JavaAPITensorFlow提供包含在org.tensorflow包中。它目前是实验性的,因此不能保证其稳定性。
需要注意的是TensorFlow唯一完全支持的语言是Python,JavaAPI几乎没有什么功能。
API向我们介绍了新的类,接口,枚举和异常。
类
通过API引入的新类是:
Graph:表示TensorFlow计算的数据流图;Operation:在Tensors上执行计算的Graph节点;OperationBuilder:Operations的构建器类;Output:操作产生的张量的符号句柄;SavedModelBundle:表示从存储加载的模型;SavedModelBundle.Loader:提供加载SavedModel的选项;Server:进程内TensorFlow服务器,用于分布式训练;Session:图形执行的驱动程序;Session.Run:输出执行会话时获得的张量和元数据;Session.Runner:运行操作并评估张量;Shape:由操作产生的可能部分已知的张量形状;Tensor:静态类型的多维数组,其元素是由T描述的类型;TensorFlow:描述TensorFlow运行时的静态实用程序方法;Tensors:用于创建张量对象的类型安全工厂方法;
枚举
DataType:将张量中的元素类型表示为枚举;
接口
Operand:由TensorFlow操作的操作数实现的接口;
异常
TensorFlowException:执行TensorFlow图时抛出的未经检查的异常
如果我们将所有这些与Python中的tf模块进行比较将发现存在明显的区别。JavaAPI没有几乎相同的功能,至少目前如此。
图(Graphs)
如前所述,TensorFlow基于计算图-其中org.tensorflow.Graph是Java的实现。
注意:它的实例是线程安全的,尽管我们需要在完成它之后显式释放Graph使用的资源。
让我们从一个空图开始:
Graphgraph=newGraph();
该对象是空的,所以这个图表意义不大。要对它做任何操作,我们首先需要使用Operations加载它。
我们使用opBuilder()方法来加载它,它返回一个OperationBuilder对象,一旦我们调用.build()方法,它就会将操作添加到我们的图形中。
常量
让我们在图表中添加一个常量:
Operationx=graph.opBuilder("Const","x")
.setAttr("dtype",DataType.FLOAT)
.setAttr("value",Tensor.create(3.0f))
.build();
占位符
占位符是变量的类型,声明时没有赋值,他们的值将在之后进行分配。这允许我们使用没有任何实际数据的操作来构建图形:
Operationy=graph.opBuilder("Placeholder","y")
.setAttr("dtype",DataType.FLOAT)
.build();
函数
最后为了解决这个问题,我们需要添加某些函数。这些可以像乘法,除法或加法一样简单,也可以像矩阵乘法一样复杂。和之前一样,我们使用.opBuilder()方法定义函数:
Operationxy=graph.opBuilder("Mul","xy")
.addInput(x.output(0))
.addInput(y.output(0))
.build();
注意:我们使用input(0)作为张量可以有多个输出。
图形可视化
遗憾的是,JavaAPI还没有包含任何允许像Python中一样可视化图形的工具。
会话(Sessions)
如前所述,Session是Graph的驱动程序。它封装了执行Operation和Graph计算张量(tensors)的环境。
这意味着我们构建的图(graph)中的张量(tensors)实际上并没有任何值,因为我们没有在会话(session)中运行图形(graph)。
我们首先将图表添加到会话(session)中:
Sessionsession=newSession(graph);
我们的操作知识简单地将x于y相乘,为了运行我们的图(graph)并得到计算结果,我们需要使用fetch()获取到xy的操作并为其提供x和y的值:
Tensortensor=session.runner().fetch("xy").feed("x",Tensor.create(5.0f)).feed("y",Tensor.create(2.0f)).run().get(0);
System.out.println(tensor.floatValue());
运行这段代码将产生的结果如下:
10.0f
Java当中加载Python中Saving模块
这可能听起来有点奇怪,但由于Python是唯一受到良好支持的语言,因此JavaAPI仍然没有保存模型的功能。
这意味着JavaAPI仅用于服务用例,至少在TensorFlow完全支持之前。目前至少我们可以使用SavedModelBundle类在Python中训练和保存模型,然后使用Java加载它们来为它们提供服务:
SavedModelBundlemodel=SavedModelBundle.load("./model","serve");
Tensortensor=model.session().runner().fetch("xy").feed("x",Tensor.create(5.0f)).feed("y",Tensor.create(2.0f))
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 药物分析考试模拟题及答案
- 医疗核心制度练习题(附答案)
- 广告制作及发布代理合同
- 战略合作协议策划及合同书
- 工业废气治理工程合同
- 乐至县乾润招商服务有限公司招聘岗位工作人员(8人)笔试参考题库附带答案详解
- 2025辽宁沈阳市城市建设投资集团有限公司所属企业沈阳新基发展有限公司招聘16人笔试参考题库附带答案详解
- 2025广东湛江经济技术开发区建设投资发展集团有限公司招聘1人笔试参考题库附带答案详解
- 2025宁夏银川威力传动技术股份有限公司招聘811人笔试参考题库附带答案详解
- 2025中国电气装备集团数字科技有限公司招聘28人笔试参考题库附带答案详解
- 2025年重庆西南大学附中高考数学模拟试卷试题(含答案详解)
- 2024年烟台海阳市卫生健康局所属事业单位招聘工作人员真题
- 2025四川巴中市国有资本运营集团有限公司招聘17人笔试参考题库附带答案详解
- 2025神农科技集团有限公司第一批校园招聘17人(山西)笔试参考题库附带答案详解
- (快手、抖音、淘宝)主播兼职合同10篇
- 南充2025年南充市公安局第一次招聘27名交通辅警笔试历年参考题库附带答案详解
- 砍木伐木合同协议范本
- 农业科技与装备应用知识考点
- 双语客运值班员红十字药箱课件
- 黑龙江省地方标准黑龙江省建设工程施工操作技术规程市政桥梁工程
- 延边大学教师岗位招聘考试真题2024
评论
0/150
提交评论