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

TensorFlow冻结图为字节文件用于Unity时遇类型错误求助

解决TensorFlow冻结计算图时的TypeError问题

这个错误其实很好定位——问题出在你传入names_to_saveables的对象里混进了张量(Tensor),但这个参数要求的必须是**变量(Variable)**或者符合可保存格式的对象。你提到的BoxPredictor_0/BoxEncodingPredictor/biases:0就是一个张量,不是变量,所以才触发了这个报错。

下面给你几个针对性的解决方案:

  • 确认要保存的是变量而非张量
    先检查模型中的可训练变量列表,看看目标偏置是否是变量类型:

    # 列出所有可训练变量
    trainable_vars = tf.trainable_variables()
    for var in trainable_vars:
        print(var.name)
    

    如果列表里存在BoxPredictor_0/BoxEncodingPredictor/biases:0(或者去掉:0的名称),直接用这个变量对象构建names_to_saveables字典,而不是通过get_tensor_by_name去获取张量:

    names_to_saveables = {var.name.split(':')[0]: var for var in trainable_vars}
    
  • 将张量转换为变量(如果确实需要保存这个张量)
    如果这个偏置是通过运算或者常量生成的张量,你可以把它包装成变量:

    # 获取目标张量
    bias_tensor = tf.get_default_graph().get_tensor_by_name('BoxPredictor_0/BoxEncodingPredictor/biases:0')
    # 转换为变量
    bias_var = tf.Variable(bias_tensor, name='BoxEncodingPredictor_biases')
    
    # 在会话中初始化这个变量
    with tf.Session() as sess:
        sess.run(bias_var.initializer)
        # 把这个变量加入到保存字典中
        names_to_saveables = {'BoxEncodingPredictor_biases': bias_var}
        # 后续执行冻结/保存操作
    
  • 推荐使用官方冻结工具(更适合Unity场景)
    如果你是为了在Unity中使用模型,更简单的方式是用TensorFlow官方的freeze_graph.py工具,它会自动把变量转换为常量张量,不需要手动处理names_to_saveables:

    1. 先保存模型的checkpoint和图结构:
      with tf.Session() as sess:
          # 假设已经完成模型初始化/训练
          saver = tf.train.Saver()
          saver.save(sess, './my_model.ckpt')
          tf.train.write_graph(sess.graph_def, './', 'my_model.pbtxt')
      
    2. 运行冻结脚本(可从TensorFlow源码中获取该脚本):
      python freeze_graph.py \
        --input_graph=./my_model.pbtxt \
        --input_checkpoint=./my_model.ckpt \
        --output_graph=./frozen_model.pb \
        --output_node_names="你的输出节点名称"
      

    生成的frozen_model.pb就可以直接导入Unity的TensorFlow插件中使用了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:42:02