【发布时间】:2018-01-20 23:57:33
【问题描述】:
我在 tensorflow 中编写了以下二进制分类程序,但有问题。无论输入是什么,成本都会一直归零。我正在尝试调试一个更大的程序,该程序没有从数据中学习任何东西。我已经将至少一个错误缩小到成本函数总是返回零。给定的程序正在使用一些随机输入并且存在相同的问题。 self.X_train 和 self.y_train 原本应该是从文件中读取的,而函数 self.predict() 有更多的层形成一个前馈神经网络。
import numpy as np
import tensorflow as tf
class annClassifier():
def __init__(self):
with tf.variable_scope("Input"):
self.X = tf.placeholder(tf.float32, shape=(100, 11))
with tf.variable_scope("Output"):
self.y = tf.placeholder(tf.float32, shape=(100, 1))
self.X_train = np.random.rand(100, 11)
self.y_train = np.random.randint(0,2, size=(100, 1))
def predict(self):
with tf.variable_scope('OutputLayer'):
weights = tf.get_variable(name='weights',
shape=[11, 1],
initializer=tf.contrib.layers.xavier_initializer())
bases = tf.get_variable(name='bases',
shape=[1],
initializer=tf.zeros_initializer())
final_output = tf.matmul(self.X, weights) + bases
return final_output
def train(self):
prediction = self.predict()
cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=prediction, labels=self.y))
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
print(sess.run(cost, feed_dict={self.X:self.X_train, self.y:self.y_train}))
with tf.Graph().as_default():
classifier = annClassifier()
classifier.train()
如果有人能找出我在这方面做错了什么,我可以尝试在我的原始程序中进行相同的更改。非常感谢!
【问题讨论】:
标签: python machine-learning tensorflow neural-network artificial-intelligence