青未了分享 http://blog.sciencenet.cn/u/yanghang

博文

Tensorflow2.0中的梯度带(GradientTape)

已有 3080 次阅读 2021-7-29 13:51 |个人分类:Python|系统分类:科研笔记

一、


二、报错解决方法

1.错误TypeError: Cannot iterate over a scalar tensor.

源代码:

with tf.GradientTape( ) as tape:

    w = tf.Variable(tf.constant(3.0))

    loss = tf.pow(w,2) #loss=w2 ,loss’=2w

grad = tape.gradient(loss,w)

print(grad)

optimizer=tf.keras.optimizers.SGD(0.1)

optimizer.apply_gradients(zip(grad,[w]))

执行到代码“optimizer.apply_gradients(zip(grad,[w]))”出现如标题的错误。

原因分析:w只是一个标量,不是可迭代对象。

解决方案:grad = tape.gradient(loss,w)修改为grad = tape.gradient(loss,[w])。这样w就由标量转换为可迭代的数组。




https://wap.sciencenet.cn/blog-346157-1297508.html

上一篇:Socket
下一篇:基于UDP的Socket编程——发送/接收数据
收藏 IP: 210.72.27.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-25 22:49

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部