首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

TensorFlow惊现大bug?网友:这是逼着我们用PyTorch啊!

最近,机器学习工程师 Santosh Gupta 在使用 TensorFlow 时发现了一个问题:使用 Keras 功能 API 创建模型自定义权重无法进行梯度更新。...Santosh Gupta 对此描述是:由于 Tensorflow 缺陷,阻止了 Keras 功能 API 创建模型自定义权重梯度更新,从而使这些权重基本上保持无法更新状态。...而 Tensorflow 中出现这个 bug,导致使用者在功能性 API 中使用自定义图层trainable_variables 缺少权重。...一种解决方法是改用 Keras 子类创建模型。模型子类化导致所有权重出现在 trainable_variables 。...此外,他认为:跟踪自定义图层训练参数效果非常好,只需要 7 行代码就可以进行测试。

93520

TensorFlow被曝存在严重bug,搭配Keras可能丢失权重,用户反映一个月仍未修复

晓查 发自 凹非寺 量子位 报道 | 公众号 QbitAI 最近,一位从事NLP工程师Gupta发现了TensorFlow存在一个严重bug: 每个在自定义层中使用Keras函数式API用户都要注意了...具体来说,就是在API中使用自定义层,会导致trainable_variables权重无法更新。而且这些权重也不会放入non_trainable_variables。...Gupta还自己用Transformer库创建模型bug在Colab笔记本复现了,有兴趣读者可以前去观看。...改用此方法后,所有的权重都将出现在trainable_variables。...网友:还是用PyTorch吧 刚刚,Keras创始人在Twitter上回复,这不是Kerasbug,并建议程序员使用单元测试。 ?

72240
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    代码实例:如何使用 Google 近日推出 TensorFlow 2.0 Preview

    ,例如: tf.layers → tf.keras.layers tf.train → tf.keras.optimizers tf.losses → tf.keras.losses ---- 1....它需要查找 trainable_variables()列表才能知道。 这种设计并不理想,它依赖于附加到图表一组 collections,并且在程序中使用全局状态是不好。...如果使用 tf.keras,则每个层都会处理自己变量,如果需要获取可训练变量列表,可以直接查询每个层: ? ---- 5. 关于变量 ?...删除杂乱无章 API 之前 TensorFlow 包含很多重复 API 或者不推荐使用 API,杂乱无章, 例如,可以使用 tf.layers 或 tf.keras.layers 创建图层,这样会造成很多重复和混乱代码..., tf.contrib 各种项目也已经被合并到 Keras 等核心 API ,或者移动到单独项目中,还有一些将被删除。 TensorFlow 2.0 会更好地组织 API,使编码更简洁。

    1.5K20

    Keras学习(一)—— Keras 模型(keras.model): Sequential 顺序模型 和 Model 模型

    input shape是一个tuple格式数据,可以是整数tuple,也可以是None input shape并没有batch dimension 批量维度 2D层,例如Dense,...度量可以是现有度量字符串标识符或自定义度量函数。...也可以是已经命名输入图层名称。 如果从框架原生张量(例如TensorFlow数据张量)进行馈送,则x可以是None(默认)。 y 与x相似,只不过y代表是目标标签(target label)。...可以是:Numpy目标(标签)数据数组(如果模型具有单个输出)或Numpy数组列表(如果模型具有多个输出)或 输入图层名称 或None. batch_size Integer 或 None,代表每个梯度更新样本数...返回 一个History实例, 其History.history属性是连续时期训练损失值和度量值记录,以及验证损失值和验证度量值(如果适用)。

    1.5K30

    对比PyTorch和TensorFlow自动差异和动态子类化模型

    使用自定义模型类从头开始训练线性回归,比较PyTorch 1.x和TensorFlow 2.x之间自动差异和动态模型子类化方法。 ?...确实在PyTorch参数是Tensor子类,当与Module api一起使用时,它们具有非常特殊属性,可以自动将自身添加到Module参数列表,并会出现在在parameters()迭代器。...同样,本着眼于自动差异/自动渐变功能核心目的,我们将使用TF和PyTorch特定自动差异实现方式实现自定义训练循环,以便为我们简单线性函数提供渐变并手动优化权重和偏差参数以及临时和朴素渐变后代优化器...一旦我们有了权重和偏差梯度,就可以在PyTorch和TensorFlow上实现我们自定义梯度派生方法,就像将权重和偏差参数减去这些梯度乘以恒定学习率一样简单。...在下面的代码片段,我们将分别使用Tensorflow和PyTorch trainable_variables和parameters方法来访问模型参数并绘制学习到线性函数图。

    1.2K20

    iOS动画-CALayer隐式动画原理与特性

    3.隐式动画关闭与显示 4.隐式动画自定义图层行为 一、何为隐式动画?...:要么返回空(这种情况不会有动画发生),要么返回遵循CAAction协议对象(CALayer拿这个结果去对先前和当前值做动画)。...当不在一个动画块修改动画属性时,UIView对所有图层行为都返回了nil,但是在动画Block范围就返回了非空值,下面通过一段代码来验证: @interface TestLayerAnimationVC...我们可以发现改变隐式动画这种图层行为有两种方式: 1.给layer设置自定义actions字典 2.实现委托代理,返回遵循CAAction协议动画对象 现在,我们尝试使用第一种方法来自定义图层行为...测试隐式动画-自定义图层行为.gif 经测试,我们会看到colorLayer将会以从左到右推进过渡形式改变色值;我们通过给layer设置自定义actions字典实现了自定义图层行为;

    4.6K51

    TensorFlow修炼之道(2)——变量(Variable)

    变量是包含张量(tensor)内存缓冲。变量必须要先被 初始化(initialize) ,而且可以在训练时和训练后保存(save)到磁盘。...tf.Variable 需要接收一个 Tensor 给构造函数,也可以自定义结点名称和数据类型。这里使用 tf.random_normal 来生成一个均值为1,标准差0.2,形状为(2, 5)张量。...TensorFlow 每个集合都是一个列表,并且有一个名称(可以是任何字符串)。可以通过 tf.get_collection 方法来获取不同名称集合。...大多数高级框架,如tf.contrib.slim、tf.estimator.Estimator和Keras在训练模型之前自动初始化变量。...要在训练开始前一次初始化所有可训练变量,可以调用 tf.global_variables_initializer() 来完成。如果只想初始化某个变量,可以调用变量 .initializer属性

    1.1K40

    如何从零开发一个复杂深度学习模型

    张量三个主要属性:name、shape(维度)、type(类型)。...表3-1表示了TensorFlow维护所有集合列表。 ? 变量两个重要属性:维度和类型。 类型一旦被确定,不能改变,不同类型赋值将会报错。...TensorFlow支持7种不同优化器,可以对TRAINABLE_VARIABLES集合变量进行优化。...为了将神经网络输出变成概率分布,softmax回归是最常用方法。对于回归问题,最常用损失函数是均方误差。回归问题一般只有一个输出节点。 在TensorFlow还可以自定义损失函数。...(2)*.ckpt保存程序每一个变量取值 文件列表第一行描述了文件元信息,比如在这个文件存储变量列表列表剩下每一行保存了一个变量片段。

    3.2K70

    TensorFlow 2.0 符号和命令式 API

    相比之下,在 Keras ,抽象水平是与我们想象方式相匹配:由层构成图,像乐高积木一样叠在一起。这感觉很自然,这是我们在 TensorFlow 2.0 中标准化模型构建方法之一。...您可以使用内置训练例程和损失函数(请参阅第一个示例,我们使用 model.fit 和 model.compile),或者如果您需要增加自定义训练循环复杂性(例如,如果您喜欢编写自己梯度裁剪代码)或损失函数...Pix2Pix 自定义训练循环和损失功能示例 这两种方法都很重要,并且可以方便地降低代码复杂性和维护成本。...您可以将其绘制为图像以显示图(使用 keras.utils.plot_model),或者直接使用 model.summary(),或者参见图层,权重和形状描述来显示图形 同样,在将图层连接在一起时,库设计人员可以运行广泛图层兼容性检查...同样,model.summary() 只提供一个图层列表(并不提供有关它们如何连接信息,因为它不可访问) ML 系统 Technical Debt 重要是要记住,模型构建只是在实践中使用机器学习一小部分

    1.3K20

    标准化Keras:TensorFlow 2.0高级API指南

    例如,您可以使用图层或优化器而无需使用Keras Model 进行训练。 易于扩展:您可以编写自定义构建块来表达新研究想法,包括新图层、损失函数和[在此插入您想法]以开发最先进想法。...定义模型最常用方法是构建图层图,最简单模型类型是层堆叠。...Model Subclassing API 使用Model Subclassing API可以构建完全可自定义模型,您可以在类方法主体以此样式强制定义自己前向传递。...可以使用前面显示简单编译和拟合命令编译和训练所有三种类型模型,或者您可以编写自己自定义训练循环以进行完全控制。...也就是说,如果您正在开发自定义架构,我们建议使用tf.keras来构建模型而不是Estimator。

    1.7K30

    Keras之父出品:Twitter超千赞TF 2.0 + Keras速成课程

    通过调用.numpy()来获取其作为Numpy数组值: ? 与Numpy数组非常相似,它具有dtype和shape属性: ?...它提供了可访问且高效高级用户体验。 如果你是研究人员,则可能不希望不使用这些内置模块,例如图层和训练循环,而是创建自己模块。当然,Keras允许你执行此操作。...这部分主要介绍了:基础layer类、可训练及不可训练权重、递归组成图层、内置layer、call方法training参数、更具功能性模型定义方式、损失类、矩阵类、优化器类以及一个端到端training...对于此类层,标准做法是在call方法公开训练(布尔)参数。 通过在调用公开此参数,可以启用内置训练和评估循环(例如,拟合)以在训练和推理中正确使用该图层。 ?...Callback fit简洁功能之一(内置了对样本加权和类加权支持)是你可以使用回调轻松自定义训练和评估期间发生情况。

    1.4K30

    Keras之父出品:Twitter超千赞TF 2.0 + Keras速成课程

    通过调用.numpy()来获取其作为Numpy数组值: ? 与Numpy数组非常相似,它具有dtype和shape属性: ?...它提供了可访问且高效高级用户体验。 如果你是研究人员,则可能不希望不使用这些内置模块,例如图层和训练循环,而是创建自己模块。当然,Keras允许你执行此操作。...这部分主要介绍了:基础layer类、可训练及不可训练权重、递归组成图层、内置layer、call方法training参数、更具功能性模型定义方式、损失类、矩阵类、优化器类以及一个端到端training...对于此类层,标准做法是在call方法公开训练(布尔)参数。 通过在调用公开此参数,可以启用内置训练和评估循环(例如,拟合)以在训练和推理中正确使用该图层。 ?...Callback fit简洁功能之一(内置了对样本加权和类加权支持)是你可以使用回调轻松自定义训练和评估期间发生情况。

    1K00

    Keras高级概念

    Function API介绍 在function API,可以直接操作张量,并将图层用作使用张量和返回张量函数。...一个简单例子是试图同时预测数据不同属性网络模型,例如从一个匿名人员那里获取一系列社交媒体帖子作为输入网络,并试图预测该人属性,例如年龄,性别和收入水平等。...结合不同损失最简单方法是将它们全部加起来。在Keras,可以在编译中使用列表或损失字典来为不同输出指定不同优化函数;所产生损失值总计为全局损失,在训练期间最小化。...几个常见神经网络组件被实现为图形。两个值得注意是Inception模块和残差连接。为了更好地理解function API如何用于构建图层图,看一下如何在Keras实现它们。...--与调用图层实例时情况完全相同。

    1.7K10

    浅谈kerasMerge层(实现层相加、相减、相乘实例)

    【题目】kerasMerge层(实现层相加、相减、相乘) 详情请参考: Merge层 一、层相加 keras.layers.Add() 添加输入列表图层。...该层接收一个相同shape列表张量,并返回它们和,shape不变。...], outputs=out) 三、层相乘 Multiply keras.layers.Multiply() 该层接收一个列表同shape张量,并返回它们逐元素积张量,shape不变。...强调,Keras最小操作单位是Layer,每次操作是整个batch。 自然,在keras,每个层都是对象,可以通过dir(Layer对象)来查看具有哪些属性。...当你不知道有这个东西存在时候,就会走不少弯路。 以上这篇浅谈kerasMerge层(实现层相加、相减、相乘实例)就是小编分享给大家全部内容了,希望能给大家一个参考。

    2.6K10
    领券