You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TensorFlow视频分类教程报错:Tensor不可哈希,建议用tensor.ref()作为键

解决TensorFlow视频分类训练时Tensor不可哈希的错误

问题根源

该错误是einops与当前TensorFlow版本不兼容导致的——新版TensorFlow调整了Tensor的哈希机制,而旧版einops的rearrange方法仍在尝试直接将Tensor作为哈希键使用,从而触发报错。

可行解决方案

  • 指定兼容的einops版本
    安装经过验证的兼容版本,比如0.6.1或0.5.0:

    pip install einops==0.6.1 --force-reinstall
    
  • 用TensorFlow原生API替代einops.rearrange
    直接修改ResizeVideo层中的rearrange调用,改用TensorFlow原生的transpose和reshape实现相同逻辑。例如原代码:

    x = rearrange(x, 'b t h w c -> b h w t c')
    

    替换为:

    x = tf.transpose(x, perm=[0, 2, 3, 1, 4])
    

    这种方式完全避开einops的哈希问题,且性能更贴合TensorFlow生态。

  • 调整TensorFlow版本
    如果是TensorFlow版本过高导致的兼容问题,可降级到2.14.0版本:

    pip install tensorflow==2.14.0 --force-reinstall
    
  • 包装einops调用为PyFunction
    若必须保留einops,可在ResizeVideo层的call方法中用tf.py_function包装rearrange调用,强制在Eager模式下执行:

    def rearrange_tensor(x):
        from einops import rearrange
        return rearrange(x, 'b t h w c -> b h w t c')
    
    x = tf.py_function(rearrange_tensor, [x], Tout=tf.float32)
    # 手动设置输出形状,避免Graph模式下形状丢失
    x.set_shape(x.shape.as_list())
    

内容的提问来源于stack exchange,提问作者Hammond

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 02:05:03