在构造tensorflow模型类时遇到问题

时间:2017-07-06 10:02:52

标签: python machine-learning tensorflow

我在弄清楚如何构建Tensorflow模型代码时遇到了一些麻烦。我一直在遵循本网站上的指南:link

然而,通过这种结构,我意识到我无法以这样的方式声明我的模型,即我可以在Model类的train()方法中传递训练数据。

train()方法

def train(self, data_x, data_y):
    seq_length, longest_seq, data_x = Utils.padding(data_x)
    n_inputs = np.array(data_x).shape[0]

    self.x_placeholder_input = tf.placeholder(tf.float32, shape=[None, longest_seq, n_inputs])
    self.y_placeholder_label = tf.placeholder(tf.int32, shape=[None, self.num_of_classes])
    self.sq_placeholder_seq_length = tf.placeholder(tf.int32, shape=[None])

    num_of_epoch = 100
    with tf.Session() as sess:
        for epoch in range(num_of_epoch):
            # initialise all variables
            sess.run(tf.global_variables_initializer())
            sess.run(self.optimize(),
                     feed_dict={self.x_placeholder_input: data_x,
                                self.y_placeholder_label: data_y,
                                self.sq_placeholder_seq_length: seq_length})

            if num_of_epoch % 10 == 0:
                # Create Saver to save model
                print "Cycle " + str(epoch) + " out of " + str(num_of_epoch) + " done"
                saver = tf.train.Saver()
                location = saver.save(sess, "saved_models/model")
                print "Model saved to : " + str(location)

模型类的__init __()方法

def __init__(self, num_of_classes):
    # placeholders
    self.x_placeholder_input
    self.y_placeholder_label
    self.sq_placeholder_seq_length

    self.num_of_classes = num_of_classes

我最初的执行计划是在单独的 main.py 脚本中创建Model类的实例。之后取决于模式(预测/训练)。只有这样,我才会通过train()将训练数据传递给模型。

由于training_data包含不同步骤的数据(文本文件),因此我需要数据才能确定占位符的形状。 (它类似于此示例的设置序列长度部分:link

因此,在我当前的实现中,我被迫仅在选择模式(预测/训练)之后创建模型实例,我发现从训练切换时效率低 - >预测,预测 - >培训将创建多个模型实例。

我是在错误地构造代码还是我的原始执行计划不正常/传统?

模型类的当前完整代码(如果有帮助,如果需要更多,请告诉我):link

0 个答案:

没有答案