本篇文章4437字,读完约11分钟

机心报道

:魔王,陈萍

如何使编程更方便?? 最近,Googletensorflow开源了帮助开发人员编写tensorflow代码的程序合成工具tf-coder。

项目地址: github/Google-research/tensor flow-coder

谷歌colab试用地址: colab.research.Google/Github/Google-research/Tensor Flow-coder/BLOB/Master/TF-coder _ conce

论文地址: arxiv/pdf/2003.09040.pdf

使用tensorflow框架应该知道在操作张量时需要跟踪多个维度、张量形状、数据类型的兼容性,当然也需要考虑数学正确性。 另外,tensorflow有数百种操作,找到应该采用的正确操作也是课题。

那么,除了直接编码张量操作之外,只要用一个证明性的例子进行演示,就能自动获取对应的代码吗? 这个想法听起来很有魅力,tensorflow coder(tf-coder )可以做到这一点!

tf-coder的原理是给出期望的张量变换的输入输出示例,tf-coder执行组合检索,找到能执行该变换的tensorflow公式,最终输出对应的tensorflow代码。

给出了输入输出示例,tf-coder会在1.3秒内找到处理方案。

tf-coder的合成算法如下。

下图显示了使用tf-coder处理张量操作问题的过程。

那么,tf-coder工具在那些场景中起作用吗?

tf-coder :以tensorflow编程为例

想依次将包含m个要素的向量(在下面的例子中为“‘rows”)和包含n个要素的向量(在下面的例子中为“‘cols”)相加,生成包含所有成对和的m×n矩阵时。

tf-coder只提供一个输入输出示例( m=3,n=4),不需要一行一行地编程这个操作。

例如,输入张量:

inputs = { )

' rows ':[ 10,20,30 ],

' cols ':[ 1,2,3,4 ],

}

对应的输出张量是:

output = [ 11,12,13,14 ],

[ 21,22,23,24 ],

[ 31,32,33,34 ]

根据上述I/o新闻(默认输入到tf-coder colab ),tf-coder工具会在一秒内自动搜索相应的tensorflow代码。

tf.add(cols,tf.expand_dims(rows,1 ) )

这个简单的例子旨在证明tf-coder使用例子进行编程的思想。 tf-coder的功能不仅如此,还可以用于更难的编程问题。

tf-coder有助于找到正确的函数

假设解决了某个物品的价格等数值特征。 数据集中的价格范围很广,例如从不足10美元到1000美元以上各种各样。 如果这些价格直接用作特征,模型可能会过于合身,在模型的判断阶段很难解决异常价格。

为了解决这些问题,可能需要使用bucketing将数字价格转换为类别特征。 例如,如果采用bucket边界[ 10,50,100,1000 ],则低于10美元的价格属于bucket,从10美元到50美元的价格属于bucket 1。

选择bucket边界后,如何使用tensorflow将数字价格映射到bucket索引? 例如,以下是bucket边界和物品的价格:

# input tensors

boundaries = [ 10,50,100,1000 ]

prices = [ 15,3,50,90,100,1001 ]

计算每个项目的bucket编号:

# output tensor

bucket ed _ prices = [ 1,0,2,2,3,4 ]

tensorflow具有多个bucketing操作,但很难明确哪个操作适合执行这个bucketing。 tf-coder可以通过动作识别数百个tensor操作,因此通过提供输入输出示例可以找到正确的操作。

# input-output example

inputs = { )

' boundaries ':[ 10,50,100,1000 ],

“价格”: [ 15,3,50,90,100,1001 ],

}

output = [ 1,0,2,2,3,4 ]

tf-coder可以在几秒钟内输出以下处理方案。

tf.searchsorted(boundaries、prices、side='right ' )

tf-coder :用聪明的方法结合函数

让我们再看看另一个问题。 计算0-1张量可以找到输入张量每行的最大元素。

# input tensor

scores = [ [ 0.7,0.2,0.1 ],

[ 0.4,0.5,0.1 ],

[ 0.4,0.4,0.2 ],

[ 0.3,0.4,0.3 ],

[ 0.0,0.0,1.0 ]

# output tensor

top _ scores = [ [ 1,0,0 ] ],

[ 0,1,0 ],

[ 1,0,0 ],

[ 0,1,0 ],

[ 0,0,1 ]

如果一行中的相同最大元素重复出现,例如scores中的第三行,请标记第一个显示的最大元素,注意top_scores中的每一行只有一个。

与上一个问题不同,这里不存在可以执行计算的tensorflow函数。 在文档中搜索“max”可以找到tf.reduce_max、tf.argmax、tf.maximum,你不知道该用哪个吗? tf.reduce_max输出[ 0.7,0.5,0.4,0.4,1.0 ],tf.argmax输出[ 0,1,0,1 这些函数似乎与本例的预期输出不太相关。

时讯:输入示例,自动生成代码:TensorFlow官方工具TF

tf-coder有助于应对这些挑战。 可以将这个问题作为输入输出示例的形式。

# input-output example

inputs = { )

' scores ':[ 0.7,0.2,0.1 ],

[ 0.4,0.5,0.1 ],

[ 0.4,0.4,0.2 ],

[ 0.3,0.4,0.3 ],

[ 0.0,0.0,1.0 ],

}

output = [ [ 1,0,0 ] ],

[ 0,1,0 ],

[ 1,0,0 ],

[ 0,1,0 ],

[ 0,0,1 ]

tf-coder将tf.one_hot与tf.argmax结合使用,得到问题的答案:

TF.CAST ( TF.one _ HOT ( SCores,axis=1),3 ),TF

tf-coder通过详细搜索tensorflow操作的组合,通常发现优雅的处理方法,简化步骤,加快tensorflow程序。

tf-coder :用更少的debug写正确的代码

通过将各行除以该行之和,可以将整数出现次数列表正规化为概率分布。 例如:

# input tensor

counts = [ 0,1,0,0 ],

[ 0,1,1,0 ],

[ 1,1,1,1 ] ]

# output tensor

normalized = [ [ 0.0,1.0,0.0,0.0 ] ],

[ 0.0,0.5,0.5,0.0 ],

[ 0.25,0.25,0.25,0.25 ]

即使知道可用的函数( TF.reduce _ sumfollowedbytf.pide ),写正确的代码也不容易。 第一次尝试可能是这样的。

# first attempt

normalized = tf.pide(counts,tf.reduce_sum(counts,axis=1) )

但是上述代码对吗? 我们需要考虑一些潜在的问题。

代码中的axis值正确吗? 我应该变更为axis=0吗?

counts和tf.reduce_sum(counts,axis=1)的形状与除法兼容吗? 需要改变形状或者进行倒置操作吗?

counts和tf.reduce_sum(counts,axis=1)都是tf.int32张量。 tf.int32张量能除法吗? 需要先转换为浮点数据类型吗?

两个参数的顺序正确吗? 需要调换位置吗?

输出的类型是tf.int32、tf.float32还是别的?

有更简单或更好的方法吗?

tf-coder只提供以下输入输出示例。

# input-output example

inputs = { )

' counts ':[ 0,1,0,0 ],

[ 0,1,1,0 ],

[一,一,一,一],

}

output = [ [ 0.0,1.0,0.0,0.0 ],

[ 0.0,0.5,0.5,0.0 ],

[ 0.25,0.25,0.25,0.25 ]

tf-coder提供处理方案:

tf.cast(tf.pide(counts,TF

如果tf-coder生成上述处理方案,则可以确保在示例输入中执行代码时正确生成示例输出。 tf-coder的处理方法不使用不必要的步骤。 更快地找到上述潜在问题的答案。 必须使用额外的tf.expand_dims步骤,使张量形状与除法兼容。 tf.pide的答案必须是tf.float32类型。

时讯:输入示例,自动生成代码:TensorFlow官方工具TF

这样,tf-coder就可以帮助开发者编写简单准确的代码,而不需要痛苦的调试过程。

局限性

但是,tf-coder也有限度。 现在,可以在1分钟内找到3~4种运算相关的处理方案,但在短时间内找到6种以上操作相关的处理方案,对它来说太多了,太复杂了。 另外,tf-coder不支持复张量、字符串张量或raggedtensor。

有关tf-coder支持操作的完整列表,请参见Colab.research.Google/Github/Google-research/Tensor Flow-coder/BLOB/Master/TF-coder

另外,tf-coder只能保证对给定的输入输出例子处理方式比较有效。 此工具搜索与指定的输入输出示例匹配的简单tensorflow表达式,但可能“太简单了”,无法如预期那样泛化。 尽量不要使样品模糊很有帮助。 这通常可以通过向输入/输出张量添加越来越多的数值来实现。

时讯:输入示例,自动生成代码:TensorFlow官方工具TF

amazon sagemaker是完全托管的服务,可以帮助开发人员和数据科学家快速构建、培训和部署机器学习模型。 sagemaker完全消除了机器学习中每一步的繁重工作,使优质模型的开发变得更简单。

现在公司开发者可以免费领取1000元的服务扣除券,轻松访问amazon sagemaker,迅速体验5个人人工智能的应用例子。

© the end

转载请联系本公众号取得许可

寻求帖子或文章: content@jiqizhixin

原始标题:“输入示例,自动生成代码: tensorflow官方工具tf-coder现在是开源的。”

阅读原文。

来源:彭博新闻网

标题:时讯:输入示例,自动生成代码:TensorFlow官方工具TF

地址:http://www.pks4.com/ptyxw/17092.html