在一行代码中使用任何tensorflow模型

tfi的Python项目详细描述


tfi为任何tensorflow模型提供了一个简单的python接口。它通过动态自动生成一个python类来实现这一点。

下面是对基于Inception v1的savedModel使用tfi的示例。这个特定的savedModel有一个predict方法和一个SignatureDef方法,看起来像:predict(images float <1,224,224,3>) -> (categories string <1001>, scores float <1,1001>)

TFI在起作用

>>> importtfi>>> InceptionV1=tfi.saved_model.as_class("./inception-v1.saved_model")

传入数据

tfi可以自动将您提供的任何数据调整为图形所需的形状。让我们随机拍一张我在网上找到的狗的照片…

dog
>>> model=InceptionV1()>>> image=tfi.data.file("./dog-medium-landing-hero.jpg")>>> result=model.predict(images=[image])>>> categories,scores=result.categories,result.scores[0]

如果我们打印前5个概率,我们会看到:

>>> [(scores[i],categories[i].decode('utf-8'))foriinscores.argsort()[:-5:-1]][(0.80796158, 'bloodhound, sleuthhound'),
 (0.10305813, 'English foxhound'),
 (0.064740285, 'redbone'),
 (0.009166114, 'beagle')]

不错!

图像数据

tf.data.file函数使用mimetypes来发现要使用的正确数据解码器。如果图形的输入是"image/*",tfi将自动解码并将图像大小调整为适当的大小。在上面的例子中,狗的jpeg图像被自动解码并调整大小为224x224。

批次

如果仔细查看上面的示例代码,您将看到images参数实际上是一个数组。由tfi生成的类足够聪明,可以将图像数组转换为大小适当的一批张量。

带变量的图

类的每个实例都有独立于其他实例的变量。如果一个图的变量在会话期间以一种有用的方式发生了变异,那么您可以通过在同一个实例上再次调用方法来继续使用这些变异。

如果希望有多个彼此不干扰的实例,可以创建第二个实例并分别对每个实例调用方法。

tfi和savedModels

tfi使用savedModel的signatureDefs中的信息在生成的类上生成方法。每个方法的关键字参数名称也从signaturedef的信息中提取。

示例中使用的savedModel是使用tf.estimator.Estimator#export_savedmodel函数创建的。

开始

TFI is on PyPI,用pip install tfi安装。

未来工作

调整tfi.data函数来处理队列和数据集不需要太多的工作。如果这是您希望我做的事情,请使用您的特定用例file an issue

扩展tfi.data来支持更多格式也非常简单。File an issue使用您希望看到的特定格式。对于加分,包括预期的张量类型和形状。要获得双倍的加分,请提供一种在真实模型中测试的方法。

现在创建格式良好的savedModel并不容易。如果这是你希望tfi在未来做的事情……file an issue。;)

致谢

如果你好奇的话,上面使用的照片来自a random Google image search

由于this fantastic guide,pypi打包容易得多。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何在任何一个特定端口收到短信时自动打开Android应用程序?   Android/Java如何创建int数组   Android Java:启动活动时出现问题,错误导致类片段膨胀   Java方法来接收请求并生成Oauth签名   PDFBox中的java渐变笔划   java如何使用字符串从数组列表中获取数据   java如何让WebSphere项目在tc server下运行?   scala SPARK:java。lang.IllegalStateException:找不到任何生成目录   java如何找到集合类型?   java如何编写Firebase Firestore多对多关系的读取规则   java ListView滚动方向   在Java中从URL播放wav文件时获得“UnsupportedFileException”音频   java将X&Y转换为Lat&Lon   数据结构如何知道Java中同一映射中是否有两个相同的元素   使用Java客户端创建ElasticSearch映射时发生AbstractMethodError   java如何从Android Studio中的倒计时计时器返回标志数组的值?   Java将char从方法传递回main   c#。适用于windows mobile的Net web浏览器