tensorflow报错问题及解决方案记录页

环境:
tensorflow:2.1
keras:2.3.1

因为偶尔就会出现这些问题,每次都得重新搜索解决方案很麻烦,所以在此记录一下,持续更新


以下报错的原因是由于keras版本变动导致广播方式不一样

报错:
使用Keras实现Attention注意力时报错维度不匹配,报错位置是a = K.permute_dimensions(a, (0, 3, 2, 1))

ValueError: Dimension must be 5 but is 4 for ‘{{node attention_11/transpose_4}} = Transpose(attention_11/truediv, attention_11/transpose_4/perm)’ with input shapes: [?,8,?,8,?], [4]

将原句:

A = K.batch_dot(Q_seq, K_seq, axes=[3, 3]) / self.size_per_head ** 0.5

改为:

A = tf.einsum('bjhd,bkhd->bhjk', Q_seq, K_seq)/ self.size_per_head ** 0.5

将原句:

O_seq = K.batch_dot(A, V_seq, axes=[3, 2])

改为:

O_seq = tf.einsum('bhjk,bkhd->bjhd', A, V_seq)

以下报错的原因是python代码是基于TensorFlow1.0+的,而系统中的TensorFlow版本为2.0+

报错:

AttributeError: module ‘tensorflow’ has no attribute ‘ConfigProto’

将原句:

config = tf.ConfigProto()

改为:

config = tf.compat.v1.ConfigProto()

报错:

RuntimeError: set_session is not available when using TensorFlow 2.0.

将原句:

KTF.set_session(session)

改为:

tf.compat.v1.keras.backend.set_session(session)

报错:
AttributeError: module ‘tensorflow’ has no attribute ‘Session’

将原句:

sess = tf.Session()

改为:

sess = tf.compat.v1.Session()

报错:
TypeError: init() got an unexpected keyword argument ‘syntax’

通过以下命令解决:

conda install -c conda-forge protobuf

报错:
ImportError: No module named tensorboard.plugins

原因是tensorflow版本太低(0.1),安装tensorflow 1.0版本解决

引用:import tensorflow.compat.v1 as tf tf.disable_v2_behavior() 。 引用:1. AttributeError: module ‘tensorflow’ has no attribute ‘placeholder’ 。 引用:问题类型:AttributeError: module ‘tensorflow’ has no attribute ‘set_random_seed’,最后一个引号里面的内容可能不一样,但问题的类型是一样的。 2. TypeError: iter() returned non-iterator of type ‘DataInputTest’ 。 这些错误通常是由于使用不兼容的版本或方法引起的。首先,确保你的tensorflow版本与你的代码兼容。在引用中,使用"import tensorflow.compat.v1"和"tf.disable_v2_behavior()"可以使tensorflow兼容低版本的代码。然后,对于AttributeError错误,它表明你正在尝试访问tensorflow模块中不存在的属性。在引用中,错误是"module ‘tensorflow’ has no attribute ‘placeholder’",这意味着你正在尝试访问"placeholder"属性,但它在你的tensorflow版本中不存在。你可以查看tensorflow的文档或使用适当的替代方法来解决这个问题。对于TypeError错误,它表示你正在尝试对一个非迭代对象使用iter()函数。在引用中,错误是"iter() returned non-iterator of type ‘DataInputTest’",这意味着你正在尝试对类型为'DataInputTest'的非迭代对象使用iter()函数。你需要确保你的对象是可迭代的,或者检查你是否在使用正确的对象。针对这些错误,你可以通过查看官方文档、更新tensorflow版本或检查代码逻辑来解决问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值