【问题标题】:How can I save the weight and biases of trained Neural Network如何保存经过训练的神经网络的权重和偏差
【发布时间】:2021-07-28 13:30:00
【问题描述】:

我使用 tensorflow 构建了神经网络。

在训练它并获得最低成本后,我需要将权重和偏差保存为矩阵,以便在例如 Matlab 中使用。我该怎么做?

当我在完成训练后执行以下代码以保存权重时:

from scipy.io import savemat
savemat("end_Weight1.mat", weights )

我可以保存它,但是我得到一个空矩阵,这意味着矩阵只包含四个变量,但没有任何值。我在矩阵中没有得到任何值。

我认为在保存权重或类似的东西之前需要更新权重?

【问题讨论】:

  • @Corralien 我明白了,但我得到了空矩阵!
  • 什么时候保存?训练后保存吗?
  • 您在with tf.Session() as sess: 中使用它 - 您是否尝试在会话后保存?我们无法运行它,所以我也可以建议使用print() 在不同时刻检查变量中的值 - 即。会议内外。
  • 如果你有类分配给变量 - 即。 w = tf.Variable() 并将其分配给其他变量(或发送到函数)t = w 并更改 t 中的值,然后您会在 w 中看到此更改。当您分配 t = w 时,Python 不会复制类 - 因此两个变量都指向内存中的同一个对象。

标签: python tensorflow neural-network autoencoder


【解决方案1】:

你可以使用

all_variables=tf.global_variables()

在每个批次上从创建的图表中获取变量,然后保存它们。

注意:此方法返回所有变量,因此您可以过滤列表。Ex get 根据需要通过偏差或权重过滤它。

【讨论】:

  • 你的意思是我在声明权重后使用它,然后执行 savemat("all_variable.mat", all_variables ) ?这将保存所有变量?
  • 您可以在 savemat 之前或 Session 块中的任何位置使用它
  • 有关此方法的 tensorflow vesion 1.x 的更多信息
  • 是的,但是当我使用 savemat("all_variable.mat", all_variables ) 时,它给我一个错误如下:for name, var in mdict.items(): AttributeError: 'list' object没有属性“项目”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-01
  • 2016-12-16
  • 1970-01-01
  • 1970-01-01
  • 2020-04-01
  • 1970-01-01
相关资源
最近更新 更多