【译】Effective TensorFlow Chapter3——理解变量域Scope以及何时应该使用它们

本文翻译自: 《Scopes and when to use them》, 如有侵权请联系删除, 仅限于学术交流, 请勿商用。 如有谬误, 请联系指出。 在 TensorFlow 中, 变量(Variables)和张量(tensors)有一个名字(name)属性, 用于在符号图中标识它们。 如果在创建变量或张量时未指定名称, TensorFlow 会自动为您指定名称: a = tf.constant(1) print(a.name) # prints "Const:0" b = tf.Variable(1) print(b.name) # prints "Variable:0" 您可以通过显式指定来覆盖默认名称: a = tf.constant(1, name = "a") print(a.name)# prints "a:0" b = tf.Variable(1, name = "b") print(b.name)# prints "b:0" ...

【译】Effective TensorFlow Chapter2——理解静态和动态形状

本文翻译自: 《Understanding static and dynamic shapes》, 如有侵权请联系删除, 仅限于学术交流, 请勿商用。 如有谬误, 请联系指出。 TensorFlow中的张量具有静态形状属性, 该属性在图形构造期间确定。 静态形状可能未指定。 例如, 我们可以定义一个形状张量[None, 128]: import tensorflow as tf a = tf.placeholder(tf.float32, [None, 128]) 这意味着第一个维度可以是任何大小, 并将在 Session.run() 期间动态确定。 您可以按如下方式查询Tensor的静态形状: static_shape = a.shape.as_list() # returns [None, 128] 要获得张量的动态形状, 可以调用 tf.shape 方法, 它返回一个给定张量代表的形状: dynamic_shape = tf.shape(a) ...

【译】Effective TensorFlow Chapter4——TensorFlow中的Broadcast机制的优缺点

本文翻译自: 《Broadcasting the good and the ugly》, 如有侵权请联系删除, 仅限于学术交流, 请勿商用。 如有谬误, 请联系指出。 TensorFlow 支持广播元素操作。 通常, 当你想做加法或乘法的运算时, 你需要确保操作数的形状(shape)是匹配的, 例如: 你不能将一个形状为[3, 2]的张量和一个形状为[3, 4]的张量相加。 但是, 这里有一个特殊情况, 那就是当你的其中一个操作数是一个具有单独维度(singular dimension)的张量的时候, TF 会隐式地在它的单独维度方向填满(tile), 以确保和另一个操作数的形状相匹配。 所以, 对一个[3, 2]的张量和一个[3, 1]的张量相加在 TF 中是合法的。 import tensorflow as tf a = tf.constant([ [1., 2.], [3., 4.] ]) b = tf.constant([ [1.], [2.] ])# c = a + tf.tile(b, [1, 2]) c = a + b 广播机制允许我们在隐式情况下进行填充(tile), 这种操作可以使得我们的代码更加简洁, 并且更有效率地利用内存, 因为我们不需要储存填充操作的结果。 一个可以表现这个优势的应用场景就是在结合具有不同长度的特征向量的时候。 为了拼接具有不同长度的特征向量, 我们一般都先填充输入向量, 拼接这个结果然后进行之后的一系列非线性操作等。 这是各种神经网络架构的常见模式: :...

【译】Effective TensorFlow Chapter1——TensorFlow 基础

本文翻译自: 《TensorFlow Basics》, 如有侵权请联系删除, 仅限于学术交流, 请勿商用。 如有谬误, 请联系指出。 TensorFlow 和其他数值计算库(如 NumPy)之间最显著的区别在于 TensorFlow 中的操作是基于符号运算的。 这是一个强大的概念, 它允许 TensorFlow 执行命令式库(如 NumPy)所不能做的所有事情(例如, 自动区分)。 但这也要付出更大的代价。 在我我试图揭秘 TensorFlow, 并提供一些指导方针和最佳实践, 以便更有效地使用 TensorFlow。 让我们从一个简单的例子开始, 我们要乘以两个随机矩阵。 首先, 我们看一个在 NumPy 完成的实施: import numpy as np x = np.random.normal(size=[10, 10]) y = np.random.normal(size=[10, 10]) z = np.dot(x, y) print(z) 现在我们在 TensorFlow 中执行完全相同的计算: ...

plainify

【译】用于补丁生成自动推理代码转换

这篇是导师给的论文,因为有随手删文件的习惯,所以把这篇文章发布到掘金社区留作备份,原文地址为:Automatic Inference of Code Transforms for Patch Generation.,本人目前翻译功底较差,如果有小伙伴觉得翻译的有问题,希望在评论区指出,大家共同进步 😊 论文:Fan Long, Peter Amidon, and Martin Rinard. 2017. Automatic Inference of Code Transforms for Patch Generation. In Proceedings of 2017 11th Joint Meeting of the European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering, Paderborn,Germany, September 4-8, 2017 (ESEC/FSE’17), 13 pages. https://doi.org/10.1145/3106237.3106253 摘要 我们提出了一个新的系统 Genesis,该系统能够处理人工的补丁来自动化推理代码转换,用于自动化补丁生成。我们呈现的结果描述了 Genesis 推理算法和完整的 Genesis 补丁生成系统在来自 372 个真实的 Java 项目的补丁和缺陷上工作的有效性。据我们所知,Genesis 是第一个用于自动推理补丁生成转换或从先前成功的补丁空间中搜索候选补丁的系统。...

plainify

【译】机器学习竞赛实际上是一场数据竞赛

本文翻译自: 《The Machine Learning Race Is Really a Data Race》, 如有侵权请联系删除, 仅限于学术交流, 请勿商用。 如有谬误, 请联系指出。 那些想让 AI 成为差异化因素的企业需要从可选数据集中抽取——这些数据集可能是他们自己创建的. 如果你愿意这么说的话, 机器学习或人工智能已经成为一种商品。 那些急于定义和实现机器学习的企业惊讶的发现, 实现用于使机器智能的处理数据集或问题的算法是比较容易的部分。 从谷歌的开源机器学习框架 TensorFlow 到微软的 Azure 和亚马逊的 SageMaker, 有一大批强大的即插即用解决方案, 可以轻松地完成繁重的编程工作。 不过, 数据不但没有被商品化, 反而正在成为机器学习竞赛中的关键差异化因素。 这是因为好的数据并不常见。 ...

plainify

【译】Flutter 可能是移动应用程序开发的最佳解决方案

本文翻译自Flutter Could Be the Best Solution for Mobile App Development,如有错误,望批评指正 众所周知,Java 和 Objective-C 是开发高质量 Android 和 iOS App 的首选。大多数开发人员通过这些编程语言制作足够健壮的 APP。 然而,自从 2017 年 5 月 Flutter 横空出世后,几乎所有移动应用开发公司和个人开发者都转向了这种先进的移动应用开发技术。 Flutter 是谷歌的用户界(UI)工具包,从官网介绍中我们可以得知,它可以通过统一的代码为移动端、web 端 和桌面端设计出漂亮的、具有原生 App 特性的应用程序。 Flutter 的引入给移动应用开发行业带来了诸多好处,其中之一就是它简化了跨平台应用的开发过程。 利用 Flutter 开发应用的好处 许多开发者声称他们发现 Flutter 是最有前途的平台。 此外,你现在可以找到许多可靠的公司,他们正在利用 Flutter 为企业提供超现代化、多平台的移动应用程序。 我们无法预测未来,但 Flutter 已经成为一个强大的、可以帮助开发者为 Android 和 iOS 开发移动应用的平台。 Flutter 与一个响应式的现代框架相结合,以便允许开发者可以在 Android 和 iOS 平台上构建令人印象深刻的动画、共享代码库和视图。 上述好处已经证明 Flutter 将会在行业内存活很长时间。但这些并不足以说明 Flutter 的前景和未来是光明的。 下面这些内容你应该了解下,这些是 Flutter 的其他优秀特性。 Flutter 基于 Dart 开发 谷歌开发的 Dart 语言是开发 Flutter 应用的唯一选择。Dart 是一种完全不同的编程语言;它与 Java 惟一相似的地方是语法。 Flutter 强大的编程语言也支持异步操作,这使得开发者可以更轻松地进行应用开发。 另外,在异步操作的支持下,开发人员可以执行那些需要花费时间才能完成的代码,而不会阻塞其他正在运行的代码。...