Python tf神经网络二分类,最后结果都是一样的

  统计/机器学习 计算机视觉 Python 人工神经网络 TensorFlow    浏览次数: 48
0

神经网络input是140个样本 1296维度的特征值,label前60是[1.0, 0.0] 后面是[0.0, 1.0],想来实现二分类,可是我用softmax交叉熵+L2正则化,训练出来的output全是一个相同的1*2矩阵。


有没有大神可以看出来错在哪里  T_T

    xs = tf.placeholder(tf.float32,shape=(None, 36*36))
    ys = tf.placeholder(tf.float32,shape=(None,2))

    layer1_node = 150 # 第一层隐含层神经元个数

    # first layer inference
    L1_Weights = tf.Variable(tf.random_normal([36*36,layer1_node], stddev=0.1, seed=1))
    L1_biases = tf.Variable(tf.zeros([1,layer1_node]) + 0.1)
    L1_out = tf.matmul(xs, L1_Weights) + L1_biases

    L1_out = tf.nn.relu(L1_out)

    # second layer inference
    L2_Weights = tf.Variable(tf.random_normal([layer1_node,2], stddev=0.1, seed=1))
    L2_biases = tf.Variable(tf.zeros([1,2]) + 0.1)
    out = tf.matmul(L1_out, L2_Weights) + L2_biases

    # cross entropy
    out_pro = tf.nn.log_softmax(out)
    cross_entropy = -tf.reduce_sum(ys*out_pro)
    cross_entropy_mean = tf.reduce_mean(cross_entropy)

    # regularization
    regularizer = tf.contrib.layers.l2_regularizer(0.1)
    regularization = regularizer(L1_Weights) + regularizer(L2_Weights)

    # loss
    loss = cross_entropy_mean + regularization

    # backward
    train_step = tf.train.GradientDescentOptimizer(0.01).minimize(loss)  # 基础梯度下降法
    init = tf.global_variables_initializer()

    with tf.Session() as sess:
        sess.run(init)
        for i in range(20000):
            sess.run(train_step,feed_dict={xs:recon_imgs,ys:label})
            if i % 50 == 0:
                print(sess.run(loss,feed_dict={xs:recon_imgs,ys:label}))
               
        print(sess.run(out,feed_dict={xs:recon_imgs,ys:label}))


output:[[-0.09252657 0.29252994],…… 全是一样的。。


梯度下降试着用过动量法,但是不收敛。。

 

mmmm_PNU   2018-12-07 10:23



   2个回答 
0

试试调一调learning rate吧,然后你只用一层的结构试试看,debug一下

SofaSofa数据科学社区 DS面经 问答 实战

Marvin_THU   2018-12-07 11:59

好的! 我先试试! 谢谢!! - mmmm_PNU   2018-12-07 12:47
0

虽然还没找到错误出在哪,但是先记录下:

1. 把隐含层去掉后,即只有输入层和输出层,output能看的出来有分类,错误可能是出在了hidden_layer上,但是还没有找出来到底在哪。

SofaSofa数据科学社区 DS面经 问答 实战

mmmm_PNU   2018-12-07 13:29



  相关主题

yolov3-tiny一个maxpool层算出的结果为什么和pytorch上的公式不一样   1回答

pip install opencv-python失败,难道非要编译安装?   3回答

图像处理中rgba是什么意思?   1回答

有什么好的方法识别图片中的特殊点呢   1回答

Python中怎么把一个RGB彩色图像转成灰度黑白图像?   3回答

如何安装pytorch   2回答

CNN中reLU层和max pooling层的前后顺序   2回答

怎么根据颜色来计算两个图像的相似度?   2回答

pip install opencv报错   1回答

图像分割(imaging segment) 可以对图片数据进行裁剪,增多训练的数据量么   2回答

tf.placeholder(tf.float32, shape=(None, 1024))中的None是什么意思   1回答

tensorflow里出现的strides是什么意思   1回答



回答问题时需要注意什么?

我们谢绝在回答前讲“生动”的故事。

我们谢绝“这么简单,你自己想”、“书上有的,你认真看”这类的回答;如果你认为对方的提问方式或者内容不妥,你可以直接忽略该问题,不用进行任何作答,甚至可以对该问题投反对票。

我们谢绝答非所问。

我们谢绝自己不会、硬要回答。

我们感激每一个用户在编写答案时的努力与付出!