文档章节

2017年4月9日 多层神经网络真的能训练出一个非线性的判定边界

airxiechao
 airxiechao
发布于 2017/04/09 14:49
字数 252
阅读 31
收藏 0

训练数据取自两个不同半径的圆

import keras
from keras.models import Sequential
from keras.layers import Dense, Dropout
import numpy as np
from matplotlib.pyplot import plot
%matplotlib inline

data = [ [np.cos(d), np.sin(d), 1, 0] for d in np.linspace(0,np.pi*2)] + [ [np.cos(d)*2, np.sin(d)*2, 0, 1] for d in np.linspace(0,np.pi*2)]
X = np.array(data)[:, 0:2]
y = np.array(data)[:, 2]

plot(X[y==0][:,0], X[y==0][:,1], '.')
plot(X[y==1][:,0], X[y==1][:,1], '.')

训练模型是两层神经网络

model = Sequential()
model.add(Dense(4, activation='relu', input_shape=(2,)))
model.add(Dense(1, activation='sigmoid'))

model.compile(loss='mean_squared_error', optimizer="SGD")

model.fit(X, y, epochs=2000, verbose=0)

训练得到的判定边界是个多边形,真的能分割两个圆

l = np.linspace(-2,2,num=100)

X_test = []
for i in range(len(l)):
    for j in range(len(l)):
        X_test.append([l[i], l[j]])
        
X_test = np.matrix(X_test)

p = model.predict(X_test).flatten()
p[p<.5] = 0
p[p>=.5] = 1

plot(X_test[p==0][:,0], X_test[p==0][:,1], '*')
plot(X_test[p==1][:,0], X_test[p==1][:,1], '*')

plot(X[y==0][:,0], X[y==0][:,1], '.')
plot(X[y==1][:,0], X[y==1][:,1], '.')

© 著作权归作者所有

airxiechao
粉丝 4
博文 42
码字总数 9717
作品 1
成都
程序员
私信 提问
用一句话总结常用的机器学习算法

导言 浓缩就是精华。想要把书写厚很容易,想要写薄却非常难。现在已经有这么多经典的机器学习算法,如果能抓住它们的核心本质,无论是对于理解还是对于记忆都有很大的帮助,还能让你更可能通...

1625730524878750
2018/07/03
0
0
Top100论文导读:深入理解卷积神经网络CNN(Part Ⅰ)

首发地址:https://yq.aliyun.com/articles/74729 更多深度文章,请关注:https://yq.aliyun.com/cloud 作者信息 Adrian Colyer:morning paper编辑、Accel Partners投资合伙人、SpringSourc...

uncle_ll
2017/07/12
0
0
深度全解卷积神经网络(附论文)

第一章 引言 一、本文动机 过去几年,计算机视觉研究主要集中在卷积神经网络上(通常简称为 ConvNet 或 CNN),在大量诸如分类和回归任务上已经实现了目前为止最佳的表现。尽管这些方法的历史...

技术小能手
2018/05/07
0
0
94页论文综述卷积神经网络:从基础技术到研究前景

  选自arXiv   机器之心编译   参与:Panda      卷积神经网络(CNN)在计算机视觉领域已经取得了前所未有的巨大成功,但我们目前对其效果显著的原因还没有全面的理解。近日,约克...

机器之心
2018/04/07
0
0
机器学习之深入理解神经网络理论基础、BP算法及其Python实现

  人工神经网络(Artificial Neural Networks,ANN)系统是 20 世纪 40 年代后出现的。它是由众多的神经元可调的连接权值连接而成,具有大规模并行处理、分布式信 息存储、良好的自组织自学...

大黄有故事
2017/02/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

c语言实现Sqlite3的创建db和增删改查db操作

SQLite,是一款轻型的数据库,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中使用广泛,现在准备学习一下sqlite3的使用方法并写一个测试demo,后面在项目智能...

jorin_zou
29分钟前
5
0
【2019年8月版本】OCP 071认证考试最新版本的考试原题-第2题

choose three Which three are true about the CREATE TABLE command? A) It can include the CREATE...INDEX statement for creating an index to enforce the primary key constraint. B) ......

oschina_5359
32分钟前
6
0
如何在二维码中循环批量插入图片

现在二维码种类比较多,为了突出二维码的个性及吸引客户,很多朋友都喜欢在二维码上插入图片。想要每个二维码都与众不同,但是有的时候需要批量插入图片数量有限,如果制作的二维码比较多的话...

中琅软件
33分钟前
7
0
LTR那点事—AUC及其与线上点击率的关联详解

LTR(Learning To Rank)学习排序是一种监督学习(SupervisedLearning)的排序方法,现已经广泛应用于信息索引,内容推荐,自然语言处理等多个领域。以推荐系统为例,推荐一般使用多个子策略...

达观数据
33分钟前
6
0
IntelliJ 如何显示代码的代码 docs

希望能够在 IntelliJ 代码上面显示方法的 docs。 如何进行显示? 你可以使用 Ctrl + Q 这个快捷键来查看方法的 Docs。 https://blog.ossez.com/archives/3061...

honeymoose
37分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部