目录
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.5
if a3>=0.5:
yhat=1
else:
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 torch
from torch import nn,optim
import numpy as np
class 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 x
def 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()
|