相关疑难解决方法(0)

如何在不将值保存到磁盘的情况下将Tensors恢复为过去的值?

我正在用TensorFlow进行一些实验,并遇到了障碍.我正在尝试使用TF来评估模型中的变化,然后根据损失函数的结果变化保留或恢复模型.我已经找到了困难的部分(条件控制),但我坚持一些应该相当简单的事情:我似乎无法存储一个tf.trainable_variables迭代,然后在需要时恢复它.

让我们说一个构建一个Op:

...
store_trainable_vars = []

for v in tf.trainable_variables():

    store_trainable_vars.append(v)
...
Run Code Online (Sandbox Code Playgroud)

然后,我想恢复tf.trainable_variables到上次运行此操作时的值.我想做的事情如下:

 def reject_move():

    revert_state = []

    for (v, s) in zip(tf.trainable_variables(), store_trainable_vars):

        revert_state.append(tf.assign(v, s, name="revert_state"))

    return(revert_state)
Run Code Online (Sandbox Code Playgroud)

显然,这将重新评估store_trainable_vars,这反过来又与现在的价值相关联tf.trainable_variables(),从而避免了revert_stateOp.我需要一些方法来存储和检索Tensors的值,而不回调那些Tensors的现值.就像是

...
store_trainable_vars = []

for v in tf.trainable_variables():

    store_trainable_vars.append(v.value_right_now())
...
Run Code Online (Sandbox Code Playgroud)

其中v.value_right_now()返回一个在被覆盖之前不会改变的常量.

我知道我可以使用Saver,但是该解决方案会写入磁盘,这对于此应用程序是不可接受的,因为它将在训练循环内运行.

我可能错过了一些明显的东西 - 任何指导都会受到赞赏.

python machine-learning tensorflow

8
推荐指数
2
解决办法
246
查看次数

如何使用 tensorflow .pb 文件?

我有一个 Tensorflow 文件,AlexNet.pb我正在尝试加载它,然后对我拥有的图像进行分类。我已经搜索了几个小时,但我仍然找不到加载它然后对图像进行分类的方法。是不是太明显了,我只是太愚蠢了,因为似乎没有人有加载和运行 .pb 文件的简单示例。

tensorflow

7
推荐指数
1
解决办法
1万
查看次数

tfjs_layers_model 和 tfjs_graph_model 的区别

tensorflowjs converter有输出格式

tfjs_layers_model, tfjs_graph_model

两者有什么区别?有使用建议吗?

tensorflow tensorflow.js tensorflowjs-converter

7
推荐指数
1
解决办法
1013
查看次数

在tensorflow中恢复图失败,因为没有要保存的变量

我知道堆栈和github等上有无数关于如何在Tensorflow中恢复训练模型的问题.我已阅读大部分(1,2,3).

我有几乎完全相同的问题3然而我想尽可能以不同的方式解决它,因为我的训练和我的测试需要在从shell调用的单独脚本中,我不想添加完全相同的行我用于在测试脚本中定义图形,因此我不能使用tensorflow FLAGS和其他基于手动重新运行图形的答案.

我也不想sess.run每个变量并手动映射它们,因为它解释为我的图表非常大(使用带有参数input_map的import_graph_def).

所以我运行一些图表并在特定的脚本中训练它.比如(但没有培训部分)

#Script 1
import tensorflow as tf
import cPickle as pickle

x=tf.Variable(42)
saver=tf.train.Saver()
sess=tf.Session()
#Saving the graph
graph_def=sess.graph_def
with open('graph.pkl','wb') as output:
  pickle.dump(graph_def,output,HIGHEST_PROTOCOL)


#Training the model
sess.run(tf.initialize_all_variables())
#Saving the variables
saver.save(sess,"pretrained_model.ckpt")
Run Code Online (Sandbox Code Playgroud)

我现在已经保存了图形和变量,所以我应该能够从另一个脚本运行我的测试模型,即使我的图形中有额外的训练节点.

#Script 2
import tensorflow as tf
import cPickle as pickle

sess=tf.Session()
with open('graph.pkl','rb') as input:
  graph_def=pickle.load(input)


tf.import_graph_def(graph_def,name='persisted')
Run Code Online (Sandbox Code Playgroud)

然后显然我想使用保护程序恢复变量,但我遇到了与3相同的问题,因为没有找到保存甚至创建保护程序的变量.所以我写不出来:

saver=tf.train.Saver()
saver.restore(sess,"pretrained_model.ckpt")
Run Code Online (Sandbox Code Playgroud)

有没有办法绕过这些限制,我认为通过导入图形它会恢复每个节点中未初始化的变量,但似乎不是我真的需要第二次重新运行它像大多数给出的答案?

python restore tensorflow

6
推荐指数
1
解决办法
6244
查看次数

如何在tensorflow中恢复会话?

我想使用我的神经网络而不再训练网络.我读到了

save_path = saver.save(sess, "model.ckpt")
print("Model saved in file: %s" % save_path)
Run Code Online (Sandbox Code Playgroud)

现在我把文件夹中的3个文件:checkpoint,model.ckpt,和model.ckpt.meta

我希望,在python的另一个类中恢复数据,获得我的神经网络的权重并进行单一预测.

我怎样才能做到这一点?

python machine-learning tensorflow

6
推荐指数
1
解决办法
6135
查看次数

使用MobileNet重新训练图像检测

重新培训与Tensorflow.js一起使用的MobileNet的几种方法对我来说都是失败的。有没有办法在Tensorflow.js中使用重新训练的模型?

使用现代的,基于中心的教程以及使用两者retrain.py似乎都失败了。

以及其他一些未解决的问题

另外两个最重要的问题显示了在两种情况下均失败的代码,均未解决。

目的是加载移动网络,使用自定义数据进行重新训练,然后在Tensorflow.js中使用它。遵循这两个教程似乎都失败了。可以在node.js内部完成吗?还有另一种方法吗?我在哪里犯了错误(或者该软件无法使用经过重新训练的模型)?这怎么工作?

编辑:最新的github问题和另一个问题

tensorflow tensorflow.js tensorflowjs-converter mobilenet

6
推荐指数
2
解决办法
900
查看次数

如何在tensorflow中训练后使用模型(保存/加载图)

我的张量流版本是0.11.我希望在训练后保存图形或保存tensorflow可以加载的其他东西.

我/使用导出和导入MetaGraph

我已经阅读过这篇文章: Tensorflow:如何保存/恢复模型?

我的Save.py文件:

X = tf.placeholder("float", [None, 28, 28, 1], name='X')
Y = tf.placeholder("float", [None, 10], name='Y')

tf.train.Saver()
with tf.Session() as sess:
     ...run something ...
     final_tensor = tf.nn.softmax(py_x, name='final_result')
     tf.add_to_collection("final_tensor", final_tensor)

     predict_op = tf.argmax(py_x, 1)
     tf.add_to_collection("predict_op", predict_op)

saver.save(sess, 'my_project') 
Run Code Online (Sandbox Code Playgroud)

然后我运行load.py:

with tf.Session() as sess:
   new_saver = tf.train.import_meta_graph('my_project.meta')
   new_saver.restore(sess, 'my_project')
   predict_op = tf.get_collection("predict_op")[0]
   for i in range(2):
        test_indices = np.arange(len(teX)) # Get A Test Batch
        np.random.shuffle(test_indices)
        test_indices = test_indices[0:test_size]

        print(i, np.mean(np.argmax(teY[test_indices], axis=1) ==
                         sess.run(predict_op, feed_dict={"X:0": teX[test_indices],
                                                         "p_keep_conv:0": …
Run Code Online (Sandbox Code Playgroud)

python machine-learning neural-network deep-learning tensorflow

5
推荐指数
1
解决办法
3902
查看次数

如何构建Tensorflow模型代码?

我很难找到如何构建我的Tensorflow模型代码.我想以类的形式构建它以便于将来重用.此外,我目前的结构是凌乱的,张量板图输出内部有多个"模型".

以下是我目前的情况:

import tensorflow as tf
import os

from utils import Utils as utils

os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3'

class Neural_Network:
    # Neural Network Setup
    num_of_epoch = 50

    n_nodes_hl1 = 500
    n_nodes_hl2 = 500
    n_nodes_hl3 = 500

    def __init__(self):
        self.num_of_classes = utils.get_num_of_classes()
        self.num_of_words = utils.get_num_of_words()

        # placeholders
        self.x = tf.placeholder(tf.float32, [None, self.num_of_words])
        self.y = tf.placeholder(tf.int32, [None, self.num_of_classes])

        with tf.name_scope("model"):
            self.h1_layer = tf.layers.dense(self.x, self.n_nodes_hl1, activation=tf.nn.relu, name="h1")
            self.h2_layer = tf.layers.dense(self.h1_layer, self.n_nodes_hl2, activation=tf.nn.relu, name="h2")
            self.h3_layer = tf.layers.dense(self.h2_layer, self.n_nodes_hl3, activation=tf.nn.relu, name="h3")

            self.logits = tf.layers.dense(self.h3_layer, self.num_of_classes, name="output") …
Run Code Online (Sandbox Code Playgroud)

machine-learning tensorflow

5
推荐指数
1
解决办法
3269
查看次数

如何使用张量流复制经过训练的模型?

我有一个包含模型规范和一些训练和评估模型的方法的课程。我想复制一个经过训练的对象,我尝试过copy.deepcopy()但没有成功。

下面的代码只是一个示例,但我希望它适用于使用以下相同想法的任何模型:

from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
import argparse
import sys
import copy
from tensorflow.examples.tutorials.mnist import input_data
import tensorflow as tf
FLAGS = None

class Model():

    def __init__(self):
        self.x = tf.placeholder(tf.float32, [None, 784])
        self.W = tf.Variable(tf.zeros([784, 10]))
        self.b = tf.Variable(tf.zeros([10]))
        self.y = tf.matmul(self.x, self.W) + self.b
        self.y_ = tf.placeholder(tf.float32, [None, 10])
        self.cross_entropy = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(labels=self.y_, logits=self.y))
        self.train_step = tf.train.GradientDescentOptimizer(0.5).minimize(self.cross_entropy)

    def train(self, mnist, sess):
        for _ in range(1000):
            batch_xs, batch_ys = mnist.train.next_batch(100)
            sess.run(self.train_step, …
Run Code Online (Sandbox Code Playgroud)

python oop tensorflow

5
推荐指数
1
解决办法
5451
查看次数

无法在张量流中还原模型

我正在初始化保护程序

self.saver = tf.train.Saver()
Run Code Online (Sandbox Code Playgroud)

在图形构造的末尾。然后我用保存模型

self.saver.save(sess, self.data_batch.params.LOG_DIR + "model", global_step=epoch)
Run Code Online (Sandbox Code Playgroud)

最后,我尝试使用还原它:

with tf.Session(graph=self.graph, config=self.proto_config) as sess:
    if restore:

        self.saver.restore(sess, "./" + self.data_batch.params.LOG_DIR)

    else:
        self.init.run()
Run Code Online (Sandbox Code Playgroud)

我的文件夹结构如下所示:

-Main directory
--main
--Logs/
---checkpoint
---events.out.tfevents.1528047461.Ublion18
---model-0.data-00000-of-00001
---model-0.index
---model-0.meta
---params
Run Code Online (Sandbox Code Playgroud)

错误

错误如下:

Caused by op 'save/RestoreV2', defined at:
  File "/home/dizzi/Work/PycharmProjects/NLP/HomeWork2/main.py", line 22, in <module>
    model.init_graph()
  File "/home/dizzi/Work/PycharmProjects/NLP/HomeWork2/Classes/Model.py", line 293, in init_graph
    self.saver = tf.train.Saver()
  File "/home/dizzi/anaconda3/envs/NLP/lib/python3.6/site-packages/tensorflow/python/training/saver.py", line 1311, in __init__
    self.build()
  File "/home/dizzi/anaconda3/envs/NLP/lib/python3.6/site-packages/tensorflow/python/training/saver.py", line 1320, in build
    self._build(self._filename, build_save=True, build_restore=True)
  File "/home/dizzi/anaconda3/envs/NLP/lib/python3.6/site-packages/tensorflow/python/training/saver.py", line 1357, in …
Run Code Online (Sandbox Code Playgroud)

python python-3.x tensorflow

5
推荐指数
0
解决办法
388
查看次数