gpt4 book ai didi

python - 在使用数据加载线程进行训练时,在验证集上保存性能最佳的 TensorFlow 模型的最有效方法

转载 作者:太空宇宙 更新时间:2023-11-03 16:02:18 25 4
gpt4 key购买 nike

好的,在 Torch ML 中这很容易;)我正在按照 indico 线程加载数据的示例 - https://indico.io/blog/tensorflow-data-input-part2-extensions/

所以,因为我找到了三种方法,我不喜欢这三种方法,但我确信有更好的方法。

1) 在两个不同的 application\app\run-tensorflow/models/image/cifar10/cifar10_train.py 和 cifar10_eval.py 上进行训练和评估\验证

我不喜欢这个,因为我会浪费资源,即运行 cifar10_eval.py 的 GPU。我可以从一个文件或应用程序执行此操作,但如果模型不是性能最佳的模型,我不想保存!

2)创建具有权重共享的验证模型-tensorflow/models/image/mnist/convolutional.py

好多了,但我不喜欢我需要记住所有模型参数这一事实,我确信有更好的方法在 TensorFlow 中共享参数,即我可以复制模型并说它用于参数共享但输入提要有什么不同吗?

3)我目前正在做的是使用 tf.placeholder

但无法使用这种方法进行线程处理,即 tf.RandomShuffleQueue。可能我不知道如何通过这种方法来做。

那么,我该怎么做,线程加载训练数据并进行一轮训练,然后使用这些权重并再次进行线程加载验证数据并获得模型性能?

基本上,我说的是多线程来加载训练和有效数据并保存最佳执行模型。示例与 torch- https://github.com/soumith/imagenet-multiGPU.torch 中的 imagenet 多 GPU 训练完全相似

非常感谢!

最佳答案

变量共享方法可能是实现您想要的操作的最简单方法。

看看"Sharing Variables" tutorial ;通过使用 tf.variable_scope() 和 tf.get_variable() 您可以重用变量,而无需显式管理共享。您可以改为在函数中定义模型,使用不同的参数调用它,但在两次调用之间共享模型变量。

还有包装 Tensorflow 变量管理的便利层。一种选择是 Tensorflow Slim ,这使得定义某些类别的模型(尤其是卷积模型)变得更加容易。

关于python - 在使用数据加载线程进行训练时,在验证集上保存性能最佳的 TensorFlow 模型的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40220857/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com