tensorflow和python基于bp神经网络预测_经过训练的神经网络用相同的数据产生不同的预测(TensorFlow)...

本文探讨了在TensorFlow中遇到的问题:使用相同数据训练的神经网络预测结果不同。原因是`tf.global_variables_initializer()`导致了随机初始化。为了解决模型加载,作者通过`tf.train.import_meta_graph()`和`tf.train.latest_checkpoint()`恢复模型,但发现权重和偏置以新变量形式存在。最后,作者展示了如何手动重新定义模型并使用保存的权重进行预测。
摘要由CSDN通过智能技术生成

所以我做了一些测试,发现了以下关于这个问题的信息。

由于我一直试图重用我创建的模型,我不得不使用tf.global_variables_初始值设定项(). 通过这样做,它覆盖了我导入的图形,所有的值都是随机的,这解释了不同的网络输出。这仍然给我留下了一个需要解决的问题:如何加载我的网络?目前我使用的解决方法还不是最佳的,但它至少允许我使用我保存的模型。张量流允许给函数和所使用的张量指定唯一的名称。通过这样做,我可以通过图表访问它们:with tf.Session() as sess:

saver = tf.train.import_meta_graph('path to .meta')

saver.restore(sess, tf.train.latest_checkpoint('path to checkpoints'))

graph = tf.get_default_graph()

graph.get_tensor_by_name('name:0')

使用这个方法,我可以访问所有保存的值,但它们是分开的!这意味着每次操作我都有1倍的权重和1倍的偏差,这导致了一堆新的变量。如果您不知道这些名称,请使用以下内容:

^{pr2}$

这将打印集合名称(变量存储在集合中)print(graph.get_collection('name'))

这允许我们访问集合,查看变量的名称/键是什么。在

这导致了另一个问题。我不能再使用我的模型,因为全局变量初始值设定项覆盖了所有内容。因此,我不得不用我之前得到的权重和偏差手动重新定义整个模型。在

不幸的是,这是我唯一能想到的。如果有人有更好的主意,请告诉我。在

整件事情看起来是这样的:imports...

placeholders for data...

def my_network(data):

## network definition with tf functions ##

return output

def train_my_net():

prediction = my_network(data)

cost function

optimizer

with tf.Session() as sess:

for i in how many epochs i want:

training routine

save

def use_my_net():

prediction = my_network(data)

with tf.Session() as sess:

sess.run(tf.global_variables_initializer())

saver = tf.train.import_meta_graph('path to .meta')

saver.restore(sess, tf.train.latest_checkpoint('path to checkpoints'))

print(sess.run(prediction.eval(feed_dict={placeholder:data})))

graph = tf.get_default_graph()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值