tf.contrib.seq2seq.sequence_loss 中logit和label shape不匹配报错

在使用TensorFlow进行多GPU并行训练seq2seq模型时,遇到InvalidArgumentError,原因是logits和labels的第一维尺寸不匹配。错误源于label的形状固定而logits的长度依据sequence_length动态变化。解决方案是对label进行截断,使其长度与logits一致,通过`tf.slice`和`tf.sequence_mask`进行操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在训练seq2seq网络时,单个gpu没有问题,但是当处理多个gpu并行时,问题来了:

在train时,总会报错:
InvalidArgumentError (see above for traceback): logits and labels must have the same first dimension, got logits shape [12,737] and labels shape [14]
[[{ {node GPU_2/sequence_loss/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits}} = SparseSoftmaxCrossEntropyWithLogits[T=DT_FLOAT, Tlabels=DT_INT32, _device="/job:localhost/replica:0/task:0/device:GPU:2"](GPU_2/sequence_loss/Reshape, GPU_2/sequence_loss/Reshape_1/_1659)]]
[[{ {node update_parameters/clip_by_global_norm/mul_468/_19885}} = _Recvclient_terminated=false, recv_device="/job:localhost/replica:0/task:0/device:CPU:0", send_device="/job:localhost/replica:0/task:0/device:GPU:0", send_device_incarnation=1, tensor_name=“edge_148755_update_parameters/clip_by_global_norm/mul_468”, tensor_type=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"]]

错误代码位置:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值