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

Tensorflow中tf.trainable_variables()不返回模型权重numpy数组怎么办

问题原因

tf.trainable_variables() 设计上返回的就是所有可训练的 tf.Variable 类型对象实例,仅存储变量的元信息(名称、形状、数据类型等),不会直接返回权重的数值数组,需要调用对应接口读取实际值。

对应解决方案

分两种TensorFlow版本场景处理:

TensorFlow 2.x(默认开启即时执行模式)

直接对每个Variable对象调用.numpy()方法即可导出为numpy数组,示例代码如下:

import tensorflow as tf

# 获取所有可训练变量列表
trainable_vars = tf.trainable_variables()
# 批量导出为numpy数组
weights_list = [var.numpy() for var in trainable_vars]

# 如需提取指定层的权重,按变量名过滤即可
b1c1_kernel = next(var.numpy() for var in trainable_vars if var.name == "VGGNet/B1C1/kernel:0")

TensorFlow 1.x(默认图执行模式)

1.x不会自动执行计算,需要配合会话(Session)才能读取变量值,操作步骤如下:

import tensorflow as tf

# 先定义全局变量初始化操作
init_op = tf.global_variables_initializer()

with tf.Session() as sess:
    # 初始化变量,若加载预训练权重可替换为saver.restore(sess, "权重文件路径")
    sess.run(init_op)
    trainable_vars = tf.trainable_variables()
    # 调用sess.run批量读取权重数值
    weights_list = sess.run(trainable_vars)

注意事项

如果基于预训练权重提取数值,取值前必须确认权重已经成功加载到当前模型/会话中,否则提取到的会是随机初始化的数值。


内容的提问来源于stack exchange,提问作者Anwar As'ad

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 02:54:04