我正在学习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 回答
Protobuf错误通常是安装问题,在虚拟环境中运行它
如果你刚开始学习TensorFlow,我建议你首先在TensorFlow/skflow中尝试examples然后一旦你更熟悉TensorFlow,你就可以很容易地插入TensorFlow代码来构建你想要的自定义模型(还有一些例子)为了这) .
希望这些用于图像和文本理解的示例可以帮助您入门,如果您遇到任何问题,请告诉我们! (在SO中发布问题或标记skflow) .
将您的日志记录级别从WARN更改为INFO,以便更好地可视化您获得的错误 .
出于知识目的,您应该知道有5个日志记录级别:
DEBUG
INFO
警告
错误
致命