0
我只是想知道TensorFlow软件包提供的softmax(即tensorflow.nn.softmax)能被我自己实现的softmax代替吗?在TensorFlow中可以用默认的softmax替代默认的softmax吗?
我运行cross_entropy计算原始教程文件mnist_softmax.py:
cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_ * tf.log(tf.nn.softmax(y)), reduction_indices=[1]))
它会给一个交叉验证的准确率0.9195,这很有道理。
不过,我做了一些变化,比如下面:
# Create the model
x = tf.placeholder(tf.float32, [None, 784])
W = tf.Variable(tf.zeros([784, 10]))
b = tf.Variable(tf.zeros([10]))
y = tf.matmul(x, W) + b
# The below two lines are added by me, an equivalent way to calculate softmax, at least in my opinion
y1 = tf.reduce_sum(y)
y2 = tf.scalar_mul(1.0/y1, y)
# Define loss and optimizer
y_ = tf.placeholder(tf.float32, [None, 10])
...
cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_ * tf.log(y2), reduction_indices=[1]))
train_step = tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy)
然而,交叉验证的准确率只有0.098。
任何人都有任何洞察到这个问题?非常感谢。
感谢您的更正,我很抱歉我的疏忽。是的,在采用你的代码后,事情变得更好。不过,我只是放弃reduction_indices = [1],因为python解释器抱怨。 –