Python 3.x 使用Tensorflow的简单逻辑回归:损失和重量根本没有变化

Python 3.x 使用Tensorflow的简单逻辑回归:损失和重量根本没有变化,python-3.x,numpy,tensorflow,Python 3.x,Numpy,Tensorflow,我试图在虚拟数据上运行一个简单的逻辑回归。显然,损失和重量在不同的时期没有变化。我曾尝试将学习率改为不同的值,但没有成功。此外,我尝试了不同的权重随机初始化,并增加了历元数,但效果并不理想。以下是我运行的示例: train_set_x_dummy = np.random.rand(3,100) #100 examples with 3 features train_set_y_dummy = np.random.randint(high=2,low=0,size=(1,10)) n_featur

我试图在虚拟数据上运行一个简单的逻辑回归。显然,损失和重量在不同的时期没有变化。我曾尝试将学习率改为不同的值,但没有成功。此外,我尝试了不同的权重随机初始化,并增加了历元数,但效果并不理想。以下是我运行的示例:

train_set_x_dummy = np.random.rand(3,100) #100 examples with 3 features
train_set_y_dummy = np.random.randint(high=2,low=0,size=(1,10))
n_features = train_set_x_dummy.shape[0]

X = tf.placeholder(name="X", dtype=tf.float32,shape=(n_features,None))
Y = tf.placeholder(name="Y", dtype=tf.float32,shape=(1,None))


W = tf.Variable(np.random.rand(n_features,1), name="weights",dtype=tf.float32)
b = tf.Variable(0 ,name="bias",dtype=tf.float32)

y_preds = tf.nn.sigmoid( tf.matmul(tf.transpose(W),X) + b)
loss = tf.nn.softmax(Y - y_preds)
mse = tf.reduce_sum(loss)

optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.01).minimize(loss)

tf.set_random_seed(1103)
with tf.Session() as sess:    
    sess.run(tf.global_variables_initializer())
    loss_summary = tf.summary.scalar("loss_scaler",mse)
    weights_summary = tf.summary.histogram("weights_summary",W)
    bias_summary = tf.summary.histogram("bias_summary",b)
    writer = tf.summary.FileWriter('logs', tf.get_default_graph())

    for epoch in range(1000):

        (_,l,y_preds_log,weights,mse_values) = sess.run([optimizer,mse,y_preds,W,mse],feed_dict={X:train_set_x_dummy , Y:train_set_y_dummy})
        mse_str = loss_summary.eval(feed_dict={X:train_set_x_dummy , Y:train_set_y_dummy})
        writer.add_summary(mse_str,epoch)

        writer.add_summary(weights_summary.eval(),epoch)
        writer.add_summary(bias_summary.eval(),epoch)

    writer.flush()

那么,知道为什么会发生这种情况吗?

Softmax对于单个预测总是返回
1
。(exp(x)/sum(exp(x)=1,当有一个项要求和时)。我在这里回答了一个类似的问题:。因此请改用sigmoid。相关讨论: