博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
深度学习的一些代码
阅读量:4975 次
发布时间:2019-06-12

本文共 4566 字,大约阅读时间需要 15 分钟。

简单的一层DNN:

  

import numpy as npdef nonlin(x,deriv=False):    if deriv==True:        return x*(1-x)    return 1/(1+np.exp(-x))  X=np.array([[0,1,1],[1,1,0],[1,0,1],[1,1,1]])y=np.array([[0,0,1,1]]).Tnp.random.seed(1)w=2*np.random.random((3,1))-1for iter in range(10000):    l0=X    l1=nonlin(np.dot(l0,w))    l1_error=y-l1 #实际值与预测值之间的差值,差值越大,调整力度越大    l1_grad=l1_error*nonlin(l1,True) #用差值当权重,差值越小,梯度相应较小,调整力度较小    w=w+np.dot(l0.T,l1_grad)print('result')print(l1)#print(l1_grad)print(y)

简单的两层DNN:

import numpy as npdef nonlin(x,deriv=False):    if deriv==True:        return x*(1-x)    return 1/(1+np.exp(-x))X=np.array([[1,0,0],[0,1,0],[1,0,1],[1,1,0]]) #输入数据y=np.array([[0,0,1,1]]).T #label值w0=2*np.random.random((3,3))-1w1=2*np.random.random((3,1))-1for iter in range(10000):    l0=X     l1=nonlin(np.dot(l0,w0))    l2=nonlin(np.dot(l1,w1))    l2_error=y-l2    l2_grad=l2_error*nonlin(l2,True)    l1_error=l2_grad.dot(w1.T) #不懂    l1_grad=l1_error*nonlin(l1,True)    w1=w1+l1.T.dot(l2_grad)    w0=w0+l0.T.dot(l1_grad)print('result')print(l2)print(y)

线性分类对三种螺旋形数据:

import numpy as npimport matplotlib.pyplot as plt#%matplotlib inlineplt.rcParams['figure.figsize']=(10.0,8.0) #set default size of plotsplt.rcParams['image.interpolation']='nearest'plt.rcParams['image.cmap']='gray'#%load_ext autoreload#%autoreload 2np.random.seed(0)N=100D=2K=3X=np.zeros((N*K,D))y=np.zeros(N*K,dtype='uint8')for j in range(K):    ix=list(range(N*j,N*(j+1)))    r=np.linspace(0.0,1,N)    t=np.linspace(j*4,(j+1)*4,N)+np.random.randn(N)*0.2    X[ix]=np.c_[r*np.sin(t),t*np.cos(t)]    y[ix]=jfig=plt.figure()plt.scatter(X[:,0],X[:,1],c=y,s=40,cmap=plt.cm.Spectral)plt.xlim([-1,1])plt.ylim([-1,1])W=0.01*np.random.randn(D,K)b=np.zeros((1,K))step_size=1e-0 #学习率为1时,准确率0.47step_size=1e-1 #学习率为0.1时,准确率0.75#step_size=1e-2 #学习率为0.01时,准确率0.63#step_size=1e-6 #学习率为1e-6时,准确率0.38reg=1e-3num_examples=X.shape[0]for i in range(2000):    scores= np.dot(X,W)+b    exp_score=np.exp(scores)    probs=exp_score/np.sum(exp_score,axis=1,keepdims=True)    coret_logprobs=-np.log(probs[list(range(num_examples)),y])    data_loss=np.sum(coret_logprobs)/num_examples    reg_loss=0.5*reg*np.sum(W*W)    loss=data_loss+reg_loss    if i%10 == 0:        print("iteration %d:loss %f"%(i,loss))    dscores=probs    dscores[list(range(num_examples)),y]=dscores[list(range(num_examples)),y]-1    dscores/=num_examples #此处是/号,要细心!!!    dW=np.dot(X.T,dscores)    db=np.sum(dscores,axis=0,keepdims=True)    dW=dW+reg*W    W+=-step_size*dW    b+=-step_size*dbscores= np.dot(X,W)+bpredicted_class=np.argmax(scores,axis=1)print('training accuracy:%.2f'%(np.mean(predicted_class==y))) #计算分类准确率

 

简单的神经网络对三种螺旋形数据分类:

import numpy as npimport matplotlib.pyplot as plt#%matplotlib inlineplt.rcParams['figure.figsize']=(10.0,8.0) #set default size of plotsplt.rcParams['image.interpolation']='nearest'plt.rcParams['image.cmap']='gray'#%load_ext autoreload#%autoreload 2np.random.seed(0)N=100D=2K=3X=np.zeros((N*K,D))y=np.zeros(N*K,dtype='uint8')for j in range(K):    ix=list(range(N*j,N*(j+1)))    r=np.linspace(0.0,1,N)    t=np.linspace(j*4,(j+1)*4,N)+np.random.randn(N)*0.2    X[ix]=np.c_[r*np.sin(t),t*np.cos(t)]    y[ix]=jfig=plt.figure()plt.scatter(X[:,0],X[:,1],c=y,s=40,cmap=plt.cm.Spectral)plt.xlim([-1,1])plt.ylim([-1,1])h=100W=0.01*np.random.randn(D,h)b=np.zeros((1,h))W2=0.01*np.random.randn(h,K)b2=np.zeros((1,K))step_size=1 #学习率为1时,准确率0.94reg=1e-3num_examples=X.shape[0]for i in range(1000):    hidden_layer=np.maximum(0,np.dot(X,W)+b)    scores= np.dot(hidden_layer,W2)+b2    exp_score=np.exp(scores)    probs=exp_score/np.sum(exp_score,axis=1,keepdims=True)    coret_logprobs=-np.log(probs[list(range(num_examples)),y])    data_loss=np.sum(coret_logprobs)/num_examples    reg_loss=0.5*reg*np.sum(W*W)+0.5*reg*np.sum(W*W)    loss=data_loss+reg_loss    if i%10 == 0:        print("iteration %d:loss %f"%(i,loss))    dscores=probs    dscores[list(range(num_examples)),y]=dscores[list(range(num_examples)),y]-1    dscores/=num_examples #此处是/号,要细心!!!    dW2=np.dot(hidden_layer.T,dscores)    db2=np.sum(dscores,axis=0,keepdims=True)    dhidden=np.dot(dscores,W2.T)    dhidden[hidden_layer <=0] = 0    dW=np.dot(X.T,dhidden)    db=np.sum(dhidden,axis=0,keepdims=True)    dW2+=reg*W2    dW+=reg*W    W+=-step_size*dW    b+=-step_size*db    W2+=-step_size*dW2    b2+=-step_size*db2hidden_layer=np.maximum(0,np.dot(X,W)+b)scores= np.dot(hidden_layer,W2)+b2predicted_class=np.argmax(scores,axis=1)print('training accuracy:%.2f'%(np.mean(predicted_class==y))) #计算分类准确率

 

转载于:https://www.cnblogs.com/akrusher/articles/5887578.html

你可能感兴趣的文章
基于ASP.NET WEB API实现分布式数据访问中间层(提供对数据库的CRUD)
查看>>
[django实践]投票app
查看>>
[django]form的content-type(mime)
查看>>
JQUERY —— 绑定事件
查看>>
在TabControl中的TabPage选项卡中添加Form窗体
查看>>
oracle中SET DEFINE意思
查看>>
个人作业-最长英语链
查看>>
JMeter-性能测试之报表设定的注意事项
查看>>
1066-堆排序
查看>>
仿面包旅行个人中心下拉顶部背景放大高斯模糊效果
查看>>
强大的css3
查看>>
c#中的组件拖拽和MouseMove事件
查看>>
C# 小叙 Encoding (二)
查看>>
python创建对象数组避免浅拷贝
查看>>
CSS自学笔记(14):CSS3动画效果
查看>>
项目应用1
查看>>
Ubuntu下配置jdk和tomcat
查看>>
大型网站的演变升级
查看>>
图片延迟加载的实现
查看>>
php适配器模式(adapter pattern)
查看>>