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。相关讨论: