轻松学习神经网络1:自己构建神经网络

import numpy as np
import matplotlib.pyplot as plt
import h5py
import sklearn
import sklearn.datasets
from mpl_toolkits.mplot3d import Axes3D

1、画3D图形

def draw3D(X, Y, Z, angle=(45,-30)):
fig = plt.figure(figsize=(15,7))
ax = Axes3D(fig)
ax.view_init(angle[0], angle[1])
ax.plot_surface(X,Y,Z,rstride=1, cstride=1, cmap=’rainbow’)
plt.show()

2、用sigmod来进行非线性变换

def sigmoid(x):
s = 1/(1+np.exp(-x))
return s

3、构造前向传播函数

def forward_propagation(X, parameters):
W1 = parameters[“W1”]
b1 = parameters[“b1”]

z1 = np.dot(W1, X) + b1
a1 = sigmoid(z1)
return a1

4、初始化w,x,b的数据

def initialize_parameters_zeros(layers_dims):
parameters = {}
L = len(layers_dims) # number of layers in the network

for l in range(1, L):
    ### START CODE HERE ### (≈ 2 lines of code)
    parameters['W' + str(l)] = np.ones((layers_dims[l], layers_dims[l - 1]))
    parameters['b' + str(l)] = np.zeros((layers_dims[l], 1))
### END CODE HERE ###
return parameters

5、构造一个2个输入一个输出的神经网络

parameters = initialize_parameters_zeros([2, 1])

print(“W1 = ” + str(parameters[“W1”]))
print(“b1 = ” + str(parameters[“b1”]))

6、自己制造测试数据和训练数据

x = np.linspace(-10, 10, 100)#x的值为1*100,每个数据差0.2,例如:-10,-9.7979798….10
y = np.linspace(-10, 10, 100)#y的值为1*100,每个数据差0.2,例如:-10,-9.7979798….10
X, Y = np.meshgrid(x, y)#把X扩展为100*100的矩阵

7、把X,Y展开

X_f = X.flatten()#把X压缩为1*10000的向量,按行展开

[-10,-9.75,-9.55,….0.1010,….9.55,9.75,10,-10,-9.75,-9.55,……0.1010,0.3030…….9.55,9.75,10…..10]

Y_f = Y.flatten()#把Y压缩为1*10000的向量,按行展开

[-10,-10,-10,….-9.75,-9.75,-9.75…,-9.55,-9.55,-9.55…….0.1010,0.1010,……..9.75,9.75,9.75….10,10,10]

#8、数据生成序列队
data = zip(X_f, Y_f)#data是一个序列对

print(“data:”,list(data))#输入合并后的X_f,Y_f的值

9、预测结果

prectResult=[]
for d in data:
#print(“d:”,d)
prect=forward_propagation(d,parameters)#用前向传播预测值
prectResult.append(prect)#把数据加入列表中

10、扩展数据,并生成3D图形

T1=np.array(prectResult).reshape(100,100)#把列表转化为array,并转化为100*100矩阵
draw3D(X,Y,T1)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值