我正在尝试使用https://www.tensorflow.org/get_started/mnist/beginners中讨论的softmax回归方法来识别字符。
我的代码如下。
train_data = pd.read_csv('CharDataSet/train.csv')
print(train_data.shape)
x = tf.placeholder(tf.float32, [None, 130])
W = tf.Variable(tf.zeros([130, 26]))
b = tf.Variable(tf.zeros([26]))
y = tf.nn.softmax(tf.matmul(x, W) + b)
y_ = tf.placeholder(tf.float32, [None, 26])
cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_ * tf.log(y), reduction_indices=[1]))
train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy)
sess = tf.InteractiveSession()
tf.global_variables_initializer().run()
for _ in range(10):
batch_xs = train_data.iloc[:, 2:]
print(batch_xs)
batch_ys = getencodedbatch(train_data.iloc[:, 1])
print(batch_ys)
sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys})
然而,我的准确度为1,但情况并非如此。 我得到它的原因是因为我的y张量结果与
这样的数组[nan, ..., nan]
有人可以向我解释我的代码中有什么问题吗?
我使用下面的方法将每个字符转换为单热编码
def getencodedbatch(param):
s = (param.shape[0],26)
y_encode = np.zeros(s)
row=0
# print(y_encode)
for val in param:
col = ord(val)-97
y_encode[row, col] = 1
row += 1
return pd.DataFrame(y_encode)
答案 0 :(得分:0)
以下是您遇到的问题:
编辑告诉你如何解决它:寻找一个关于分类MNIST字符并看看它们做什么的例子。您可能希望将权重初始化为随机法线;)