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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值