首页 文章

TensorFlow程序出错

提问于
浏览
1

我正在学习TensorFlow,我偶然发现了用于创建简单的多层sigmoid网络的示例代码 . 链接中的程序用于MNIST数据库和手写数字分类 .

我想训练网络进行回归任务 . 我有30个输入(浮点数),用于预测一个输出(浮点数) . 所以我调整了代码,将任务从分类更改为回归 .

我的问题是我在tf.Session.run()中遇到错误 . 代码和错误日志如下 .

import test2
import tensorflow as tf

feed_input = test2.read_data_sets()

learning_rate = 0.001
training_epochs = 100
batch_size = 1716
display_step = 1

n_hidden_1 = 256
n_hidden_2 = 256
n_hidden_3 = 256
n_input = 30

x = tf.placeholder("float", [None, n_input])
y = tf.placeholder("float", [None])

def multilayer_perceptron(_X, _weights, _biases):
    #Hidden layer with RELU activation
    layer_1 = tf.nn.relu(tf.add(tf.matmul(_X, _weights['h1']), _biases['b1'])) 
    #Hidden layer with RELU activationn_hidden_3
    layer_2 = tf.nn.relu(tf.add(tf.matmul(layer_1, _weights['h2']), _biases['b2'])) 
    layer_3 = tf.nn.relu(tf.add(tf.matmul(layer_2, _weights['h3']), _biases['b3']))     

    return tf.matmul(layer_3, weights['out']) + biases['out']

weights = {
    'h1': tf.Variable(tf.random_normal([n_input, n_hidden_1])),
    'h2': tf.Variable(tf.random_normal([n_hidden_1, n_hidden_2])),
    'h3': tf.Variable(tf.random_normal([n_hidden_2, n_hidden_3])),
    'out': tf.Variable(tf.random_normal([n_hidden_3, 1]))
}
biases = {
    'b1': tf.Variable(tf.random_normal([n_hidden_1])),
    'b2': tf.Variable(tf.random_normal([n_hidden_2])),
    'b3': tf.Variable(tf.random_normal([n_hidden_3])),
    'out': tf.Variable(tf.random_normal([1]))
}

pred = multilayer_perceptron(x, weights, biases)

n_pred = tf.mul(pred, tf.convert_to_tensor(10000.00))

cost = tf.nn.sigmoid_cross_entropy_with_logits(n_pred, y)

optimizer = tf.train.GradientDescentOptimizer(learning_rate=learning_rate).minimize(cost)

init = tf.initialize_all_variables()

with tf.Session() as sess:
    sess.run(init)

    # Training cycle
    for epoch in range(training_epochs):
        avg_cost = 0
        total_batch = int(feed_input.train._num_examples / batch_size)
        # Loop over all batches
        for i in range(total_batch):
            batch_xs, batch_ys = feed_input.train.next_batch(batch_size)
            # Fit training using batch data
            sess.run(optimizer, feed_dict={x: batch_xs, y: batch_ys})
            # Compute average loss
            avg_cost += sess.run(cost, feed_dict={x: batch_xs, y: batch_ys}) / total_batch
        # Display logs per epoch step
        if epoch % display_step == 0:
            print "Epoch:", '%04d' % (epoch+1), "cost=", "{:.9f}".format(avg_cost)

    print "Optimization Finished!"

runfile('/ mnt / sdb6 / Projects / StockML / demo1.py',wdir ='/ mnt / sdb6 / Projects / StockML')重装上阵的模块:tensorflow.python.ops.nn_grad,tensorflow.python.training.momentum, . . . . tensorflow.python.util.protobuf,google.protobuf.internal.enum_type_wrapper,tensorflow.python.ops.nn_ops,tensorflow.python,tensorflow.python.platform.test,google.protobuf.internal.api_implementation,tensorflow,google.protobuf . internal.encoder回溯(最近一次调用最后一次):文件“”,第1行,在runfile中('/ mnt / sdb6 / Projects / StockML / demo1.py',wdir ='/ mnt / sdb6 / Projects / StockML')文件“/usr/lib/python2.7/dist-packages/spyderlib/widgets/externalshell/sitecustomize.py”,第685行,在runfile execfile(文件名,命名空间)文件“/usr/lib/python2.7/dist-packages /spyderlib/widgets/externalshell/sitecustomize.py“,第78行,在execfile中buildins.execfile(filename,* where)文件”/mnt/sdb6/Projects/StockML/demo1.py“,第69行,在sess.run中(优化器,feed_dict = {x:batch_xs,y:batch_ys})运行文件“/home/rammak/.local/lib/python2.7/site-packages/tensorflow/python/client/session.py”,第345行results = self._do_run(target_list,unique_fetch_targets,feed_dict_string)文件“/home/rammak/.local/l ib / python2.7 / site-packages / tensorflow / python / client / session.py“,第406行,在_do_run中除了tf_session.StatusNotOK为e:AttributeError:'module'对象没有属性'StatusNotOK'

3 回答

  • 3

    Protobuf错误通常是安装问题,在虚拟环境中运行它

    # On Mac:
    $ sudo easy_install pip  # If pip is not already installed
    $ sudo pip install --upgrade virtualenv
    Next, set up a new virtualenv environment. To set it up in the directory ~/tensorflow, run:
    $ virtualenv --system-site-packages ~/tensorflow
    $ cd ~/tensorflow
    Then activate the virtualenv:
    $ source bin/activate  # If using bash
    $ source bin/activate.csh  # If using csh
    (tensorflow)$  # Your prompt should change
    Inside the virtualenv, install TensorFlow:
    (tensorflow)$ pip install --upgrade https://storage.googleapis.com/tensorflow/mac/tensorflow-0.5.0-py2-none-any.whl
    You can then run your TensorFlow program like:
    (tensorflow)$ python tensorflow/models/image/mnist/convolutional.py
    
    # When you are done using TensorFlow:
    (tensorflow)$ deactivate  # Deactivate the virtualenv
    
    $  # Your prompt should change back
    
  • 0

    如果你刚开始学习TensorFlow,我建议你首先在TensorFlow/skflow中尝试examples然后一旦你更熟悉TensorFlow,你就可以很容易地插入TensorFlow代码来构建你想要的自定义模型(还有一些例子)为了这) .

    希望这些用于图像和文本理解的示例可以帮助您入门,如果您遇到任何问题,请告诉我们! (在SO中发布问题或标记skflow) .

  • 0

    将您的日志记录级别从WARN更改为INFO,以便更好地可视化您获得的错误 .
    出于知识目的,您应该知道有5个日志记录级别:

    • DEBUG

    • INFO

    • 警告

    • 错误

    • 致命

相关问题