Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >对具有字典输入(由多个模型组成)的tf.keras神经网络使用GradientTape

对具有字典输入(由多个模型组成)的tf.keras神经网络使用GradientTape
EN

Stack Overflow用户
提问于 2021-11-13 05:44:43
回答 1查看 57关注 0票数 0

我需要从Tensorflow/Keras2.0 (super_model)中实现的神经网络中获取导数。由于我之前在this post中解释的问题,这个模型由多个基本模型(从x1x6)组成。(因此,如果只将角度传递给模型,我将得到一个错误。)请参阅以下代码:

代码语言:javascript
运行
AI代码解释
复制
angles=[0] * 21

data = {
    'x1_model_input': numpy.array([angles[0:3]]),
    'x2_model_input': numpy.array([angles[3:6]]),
    'x3_model_input': numpy.array([[angles[6]]]), 
    'x4_model_input': numpy.array([angles[7:13]]), 
    'x5_model_input': numpy.array([angles[13:15]]), 
    'x6_model_input': numpy.array([angles[15:21]])
}

# this super_model prediction is working well
pred = super_model.predict(data) # `pred` shape is `shape=(1,1)` 

现在,我需要使用GradientTape根据输入数据对网络进行求导。我尝试了以下方法,目的是获得上述指定数据的网络梯度值:

代码语言:javascript
运行
AI代码解释
复制
with tf.GradientTape() as tape:
    pred = super_model(data)
# does not work as `data` is a dictionary
# the error is:
#         ...
#         return pywrap_tfe.TFE_Py_TapeGradient(
#     AttributeError: 'numpy.ndarray' object has no attribute '_id'
grad = tape.gradient(pred, data) 

但是,data是一个字典,我不能先调用tape.watch,然后调用gradient。我也不能通过data调用tf.convert_to_tesnor,因为它是一个字典。因此,我的问题是如何在不更改super_model结构的情况下继续工作

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-13 06:25:57

我不确定这对您来说是否是一个可行的选择,但是您的代码可以使用tf.Variable代替numpy

代码语言:javascript
运行
AI代码解释
复制
import tensorflow as tf

angles=[0] * 21

test_tensor = tf.Variable([angles[0:3]], dtype=tf.float32)
data = {
    'x1_model_input': test_tensor,
    'x2_model_input': tf.Variable([angles[3:6]], dtype=tf.float32),
    'x3_model_input': tf.Variable([[angles[6]]], dtype=tf.float32), 
    'x4_model_input': tf.Variable([angles[7:13]], dtype=tf.float32), 
    'x5_model_input': tf.Variable([angles[13:15]], dtype=tf.float32), 
    'x6_model_input': tf.Variable([angles[15:21]], dtype=tf.float32)
}

with tf.GradientTape() as tape:
    pred = tf.constant([[1.0]]) * test_tensor

grad = tape.gradient(pred, data) 
tf.print(grad)
代码语言:javascript
运行
AI代码解释
复制
{'x1_model_input': [[1 1 1]],
 'x2_model_input': None,
 'x3_model_input': None,
 'x4_model_input': None,
 'x5_model_input': None,
 'x6_model_input': None}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69954835

复制
相关文章
Keras vs tf.keras: 在TensorFlow 2.0中有什么区别?
在本文中,您将发现Keras和tf.keras之间的区别,包括TensorFlow 2.0中的新增功能。
AI算法与图像处理
2019/10/31
2.8K0
TensorFlow 2.0中的tf.keras和Keras有何区别?为什么以后一定要用tf.keras?
通过本教程,你可以了解 Keras 和 tf.keras 之间的区别,以及 TensorFlow 2.0 的新特性。本教程的灵感来自于上周二我在 PyImageSearch 阅读器上收到的一封邮件。
机器之心
2019/12/11
10K0
TensorFlow 2.0中的tf.keras和Keras有何区别?为什么以后一定要用tf.keras?
TensorFlow 2.0 的新增功能:第一、二部分
本书的这一部分将为您简要概述 TensorFlow 2.0 中的新增功能,与 TensorFlow 1.x 的比较,惰性求值和急切执行之间的差异,架构级别的更改以及关于tf.keras和Estimator的 API 使用情况。
ApacheCN_飞龙
2023/04/26
3.8K0
python字典批量删除多个键值对(连续)
  搜不到字典批量删除多个键值对的方法,换了个搜索姿势,批量取N个元素,那么组合一下,就出来了!
逆向小白
2023/10/16
2620
python字典批量删除多个键值对(连续)
TensorFlow 2.X,会是它走下神坛的开始吗?
机器之心原创 机器之心编辑部 现在都 2021 年了,机器学习好填的坑都已经填了,大家都在想怎么将模型用到各种实际任务上。我们再去讨论深度学习框架,吐槽它们的体验,会不会有点过时?并不会,新模型与新算法,总是框架的第一生产力。 从 Theano 一代元老,到 TensorFlow 与 PyTorch 的两元世界,到现在各个国产框架与工具组件的兴起。深度学习框架,总是跟随前沿 DL 技术的进步而改变。 不过今天并不是讨论深度学习框架的演变,而只是单纯分享一下在算法工程中,使用 TensorFlow 遇到的各种
机器之心
2023/03/29
6480
TensorFlow 2.X,会是它走下神坛的开始吗?
[译]标准化Keras:TensorFlow 2.0中的高级API指南
Keras是一个非常受欢迎的构建和训练深度学习模型的高级API。它用于快速原型设计、最前沿的研究以及产品中。虽然现在的TensorFlow已经支持Keras,在2.0中,我们将Keras更紧密地集成到TensorFlow平台。
云水木石
2019/07/02
1.8K0
[译]标准化Keras:TensorFlow 2.0中的高级API指南
《机器学习实战:基于Scikit-Learn、Keras和TensorFlow》第12章 使用TensorFlow自定义模型并训练
目前为止,我们只是使用了TensorFlow的高级API —— tf.keras,它的功能很强大:搭建了各种神经网络架构,包括回归、分类网络、Wide & Deep 网络、自归一化网络,使用了各种方法,包括批归一化、dropout和学习率调度。事实上,你在实际案例中95%碰到的情况只需要tf.keras就足够了(和tf.data,见第13章)。现在来深入学习TensorFlow的低级Python API。当你需要实现自定义损失函数、自定义标准、层、模型、初始化器、正则器、权重约束时,就需要低级API了。甚至有时需要全面控制训练过程,例如使用特殊变换或对约束梯度时。这一章就会讨论这些问题,还会学习如何使用TensorFlow的自动图生成特征提升自定义模型和训练算法。首先,先来快速学习下TensorFlow。
SeanCheney
2019/12/13
5.4K0
《机器学习实战:基于Scikit-Learn、Keras和TensorFlow》第12章 使用TensorFlow自定义模型并训练
都在关心TensorFlow2.0,那么我手里的1.x程序怎么办?
TensorFlow 是谷歌在 2015 年开源的一个通用高性能计算库。从一开始,TensorFlow 的主要目的就是为构建神经网络(NN)提供高性能 API。然而,借助于机器学习(ML)社区对它的兴趣以及时间上的优势,这个类库演变成了一个完整的 ML 生态系统。
代码医生工作室
2019/07/26
11.3K0
都在关心TensorFlow2.0,那么我手里的1.x程序怎么办?
基因日签【20210506】细菌RNA聚合酶由多个亚基组成
细菌RNA聚合酶的核心酶是400kDa大小的多亚基复合体,通常结构为α2ββ'ω结构。
尐尐呅
2022/03/31
3450
基因日签【20210506】细菌RNA聚合酶由多个亚基组成
Python安装TensorFlow 2、tf.keras和深度学习模型的定义
使用tf.keras,您可以设计,拟合,评估和使用深度学习模型,从而仅用几行代码即可做出预测。它使普通的深度学习任务(如分类和回归预测建模)可供希望完成任务的普通开发人员使用。
拓端
2020/10/23
1.6K0
TensorFlow 2.0 的新增功能:第三、四部分
如果您使用过 TensorFlow 1.x,则本部分将重点介绍迁移到 TensorFlow 2.0 所需的总体概念更改。 它还将教您使用 TensorFlow 可以进行的各种 AIY 项目。 最后,本节向您展示如何将 TensorFlow Lite 与跨多个平台的低功耗设备一起使用。
ApacheCN_飞龙
2023/04/26
2.5K0
TensorFlow 2.0 快速入门指南:第一部分
在本部分中,我们将介绍 TensorFlow 2.00 alpha。 我们将首先概述该机器学习生态系统的主要功能,并查看其使用示例。 然后我们将介绍 TensorFlow 的高级 Keras API。 我们将在本节结尾处研究人工神经网络技术。
ApacheCN_飞龙
2023/04/23
4.6K0
由两个栈组成的队列2.由两个栈组成的队列
2.由两个栈组成的队列 ---- 题目: 编写一个类,用两个栈实现队列,支持队列的基本操作(add、poll、peek)。 解题: /** * * 编写一个类,用两个栈实现队列,支持队列的基本操作(add、poll、peek)。 * * @author dream * */ public class Problem02_TwoStacksImplementQueue { public static class myQueue{ Stack<Inte
仇诺伊
2018/09/12
4290
由两个栈组成的队列
栈的特点是先进后出,队列的特点是先进先出,使用两个栈正好能把顺序反过来实现类似队列的操作。
HelloVass
2018/09/12
4270
python使用元组、字典向函数传递多个
# -*- coding: utf-8 -*- __author__ = 'River' def fun(name,age): print "%s %s" % (name,age) def fun2(name,*args,**dicargs): print "%s %s %s" % (name,args,dicargs) t=("River","15") dic={'name':'river','age':'26'} #注意这个name和这个age的key,必须和fun中的参数一致 fun("ss",":"
py3study
2020/01/08
1.4K0
Tensorflow 2.0 的这些新设计,你适应好了吗?
如果说两代 Tensorflow 有什么根本不同,那应该就是 Tensorflow 2.0 更注重使用的低门槛,旨在让每个人都能应用机器学习技术。考虑到它可能会成为机器学习框架的又一个重要里程碑,本文会介绍 1.x 和 2.x 版本之间的所有(已知)差异,重点关注它们之间的思维模式变化和利弊关系。
崔庆才
2019/09/04
9860
Tensorflow 2.0 的这些新设计,你适应好了吗?
Keras函数式API
之前所有的神经网络都是基于Sequential模型实现的,而且网络都是层的线性叠加。但是在实际情况下,有些网络需要多个独立的输入,有些网络需要多个输出;而且有些层之间具有内部分支。
皮大大
2023/08/25
2210
Python安装TensorFlow 2、tf.keras和深度学习模型的定义
使用tf.keras,您可以设计,拟合,评估和使用深度学习模型,从而仅用几行代码即可做出预测。它使普通的深度学习任务(如分类和回归预测建模)可供希望完成任务的普通开发人员使用。
拓端
2020/11/03
1.7K0
谷歌千元级TPU芯片发布,TensorFlow更换Logo推出2.0最新版
今天凌晨,谷歌一年一度的TensorFlow开发者大会在加州举行。明明应该是一场软件盛会,却被生生开出了硬件发布会的味道。
量子位
2019/04/23
7290
谷歌千元级TPU芯片发布,TensorFlow更换Logo推出2.0最新版
有了TensorFlow2.0,我手里的1.x程序怎么办?
导读: 自 2015 年开源以来,TensorFlow 凭借性能、易用、配套资源丰富,一举成为当今最炙手可热的 AI 框架之一,当前无数前沿技术、企业项目都基于它来开发。 然而最近几个月,TensorFlow 正在经历推出以来最大规模的变化。TensorFlow 2.0 已经推出 beta 版本,同 TensorFlow 1.x 版本相比,新版本带来了太多的改变,最大的问题在于不兼容很多 TensorFlow 1.x 版本的 API。这不禁让很多 TensorFlow 1.x 用户感到困惑和无从下手。一般来讲,他们大量的工作和成熟代码都是基于 TensorFlow 1.x 版本开发的。面对版本不能兼容的问题,该如何去做? 本文将跟大家分享作者在处理 TensorFlow 适配和版本选择问题方面的经验,希望对你有所帮助。内容节选自 《深度学习之 TensorFlow 工程化项目实战》 一书。 文末有送书福利!
Datawhale
2019/09/03
4.7K0
有了TensorFlow2.0,我手里的1.x程序怎么办?

相似问题

神经网络:输入层由什么组成?

41

tf.keras GradientTape:获取与输入相关的梯度

11

Keras由两个神经网络模型组成的神经网络模型

10

由多个模型组成的外键

22

如何对由字典组成的列表进行排序?

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档