qq_43894281 2023-04-22 22:58 采纳率: 0%
浏览 127
已结题

AttributeError: 'Adam' object has no attribute 'compute_gradients'求解答

AttributeError: 'Adam' object has no attribute 'compute_gradients'
在修改代码的过程中报错,本人使用的是tensorflow2.2,keras2.3.1,源代码为tensorflow1.13 实在是不知道如何修改,求解答

以下是部分代码,后期需要全部代码私我

import tensorflow.compat.v1 as tf
tf.disable_v2_behavior()
from tensorflow.python.keras.optimizers import adam_v2



 #----------------------优化器优化---------------------------(如果后期损失值过大,考虑梯度是否过大)
        #采用梯度截断技术
        #tf.variable_scope用于定义创建变量(层)的操作的上下文管理器。
        with tf.variable_scope('optimizer'):
            opt=tf.keras.optimizers.Adam(self.lr)
            #opt=tf.train.AdamOptimizer(self.lr)为原版的修改
            grad_vars=opt.compute_gradients(self.cost) #计算出所有参数的导数
            clip_grad_vars=[[tf.clip_by_value(g,-5,5),v] for g,v in grad_vars]#按照值进行截断,g、v通过限定值进行截断,clip_grad_vars为截断之后的梯度
            self.train_op=opt.apply_gradients(clip_grad_vars,self.global_step)
            #使用截断后的梯度,进行参数的更新 即clip_grad_vars每次更新,后续计数加1
        self.saver=tf.Train.Saver(tf.global_variables(),max_to_keep=5)#模型保存器   max_to_keep=5只保留5次最新的模型,如果硬盘足够大,可以大一些

曾用这个方法进行修改:
gradients = optimizer.get_gradients(objective, var_list)

但抛出一个值错误:
ValueError: Variable <tf.Variable 'agent_0/q_func/fully_connected/weights:0' shape=(9, 64) dtype=float32> has None for gradient. Please make sure that all of your ops have a gradient defined (i.e. are differentiable). Common ops without gradient: K.argmax, K.round, K.eval.

  • 写回答

1条回答 默认 最新

  • qq_43894281 2023-04-25 18:22
    关注
    
    with tf.variable_scope('optimizer'):
                #opt=adam_v2.Adam(self.lr)
                opt=Adam(self.lr)
                with tf.GradientTape() as tape:
                    grads=tape.gradient(self.cost,tf.trainable_variables())
                clip_grad_vars = [[tf.clip_by_value(g, -5, 5), v] for g, v in zip(grads, dict)]
                # 使用截断后的梯度,进行参数的更新,即clip_grad_vars每次更新,后续计数加1
                self.train_op = opt.apply_gradients(clip_grad_vars, self.global_step)
            self.saver = tf.train.Saver(tf.global_variables(), max_to_keep=5)
    
    评论

报告相同问题?

问题事件

  • 系统已结题 4月30日
  • 创建了问题 4月22日

悬赏问题

  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化
  • ¥15 Mirare PLUS 进行密钥认证?(详解)
  • ¥15 物体双站RCS和其组成阵列后的双站RCS关系验证
  • ¥20 想用ollama做一个自己的AI数据库
  • ¥15 关于qualoth编辑及缝合服装领子的问题解决方案探寻
  • ¥15 请问怎么才能复现这样的图呀