目录
neural network layer神经网络层
simple
complex
forward propagation前向传播
创建神经网络
neural network layer神经网络层
simple
输入是4个数,被送入第一层隐藏层。第一层隐藏层里面有3个神经元,每个神经元都是执行逻辑回归的小单元或逻辑回归函数。第一个神经元有两个参数w1和b1,activations是a1=g(wx+b)。后面两个神经元同理,共输出一个向量a。a会被送入该网络的最后一层。
[1]的上标表明这是layer1的运算。
第二层的流程和第一层流程相似,第一层的输出作为第二层的输入进行计算。
输出时也可选择,是输出概率值,或者0或1。
complex
最开始的输入记作a[0],则最后的等式适用于该网络的所有层次。
此处等式中的g是sigmod函数。
forward propagation前向传播
使网络做出判断或者做出预测的算法
这个例子的过程和上面两个大致相同,整个计算都是从左到右,先a[0],然后a[1],再a[2],最后a[3],这个过程也叫前向传播。因为在传播每个神经单元的activations,且计算都是一个方向,即从左至右。
x=np.array([[222,17,234,....,240]])layer_1=Dense(units=125,activation='sigmod')a1=layer_1(x)#threshold=0.5if a3>=0.5: yhat=1else: yhat=0
forward propagation in a single layer单层前向传播
x=torch.randn([1,2]) w_1=torch.randn([3,2]) b=torch.randn(1) z_1=x*w_1+b a_1=torch.sigmoid(z_1) print(a_1.shape)
foward propagation in Numpy
创建神经网络
import torchfrom torch import nn,optimimport numpy as npclass Model(nn.Module): def __init__(self): super(Model, self).__init__() self.layer_1=nn.Sequential( ) def forward(self,x): x=self.layer_1(x) return xdef main(): x=np.array([[200,17], [120,5], [425,20], [212,18]]) y=np.array([1,0,0,1]) model=Model() optimizer=optim.Adam(model.parameters(),lr=1e-3) criteon=nn.CrossEntropyLoss() for epoch in range(1000): model.train() logits=model(x) loss=criteon(logits,y) optimizer.zero_grad() loss.backward() optimizer.step() model.eval() #测试 with torch.no_grad: correct=0 logits = model(x) pred=logits.argmax(dim=1) correct+=torch.eq(y,pred).sum().float().item()