python 感知机 统计学习李航

想按书本上的步骤来实现,有了几个问题

1.首先是损失函数的定义,我这里用了平方和

2.由于使用了sign函数导致无法学习(大家可以试试用一个可导的函数),w,b设置为一个初始值后就不会有变化

import tensorflow as tf
import numpy as np

train_x=np.asarray([[3.,3.],[4.,3.],[1.,1.]])
train_y=np.asarray([[1],[1],[-1]])

X=tf.placeholder(tf.float32,[None,2])
Y=tf.placeholder(tf.float32,[None,1])
W=tf.Variable([[2],[1]],dtype=tf.float32)
b=tf.Variable([-3],dtype=tf.float32)

predict=tf.sign(tf.matmul(X,W)+b)
loss=tf.reduce_sum(tf.square(predict-Y))

train_op=tf.train.AdamOptimizer().minimize(loss)
init=tf.global_variables_initializer()
with tf.Session() as sess:
    sess.run(init)
    for i in range(8000):
        _,c,curw,curb=sess.run([train_op,loss,W,b],feed_dict={X:train_x,Y:train_y})
        if i%1000==0:
            print('Epoch:',i)
            print(c)
            print(curw)
            print(curb)

猜你喜欢

转载自blog.csdn.net/Neekity/article/details/86360709