深度学习6:全连接神经网络(简单二分类问题)

全连接神经网络(Fully Connected Neural Network,FCNN)是由一系列全连接层组成的深度神经网络,是深度学习中的基本架构。全连接层的特点是相邻两层的任意两个神经元之间均有连接。
参考文献:https://www.oreilly.com/library/view/tensorflow-for-deep/9781491980446/ch04.html
接下来,我们将用一个简单的二分类的全连接神经网络结构对数据集进行训练。
基本步骤:
1.读取数据集,并将数据表示为张量;
2.定义神经网络层
3.对网络进行训练
4.损失函数(多分类任务:nn.CrossEntropyLoss()交叉熵函数)

详细内容可关注其他笔记,这里不再过多赘述)
5.显示损失函数值变化趋势

import torch
import torch.nn as nn
import matplotlib.pyplot as plt
torch.manual_seed(123)

#1.读取数据集,并将数据表示为张量;
path = r'.\\data'
fg = open(path+'\\'+"xxxx","r",encoding='utf-8')
s = list(fg)
X1,X2,X3,Y = [],[],[],[]
for i,v in enumerate(s):
	v = v.replace('\n','')
	v = v.split(',')
	X1.append(float(v[0]))
	X2.append(float(v[1]))
	X3.append(float(v[2]))
	Y.append(int(v[3]))
fg.close()
X1,X2,X3,Y = torch.Tensor(X1),torch.Tensor(X2),torch.Tensor(X3),torch.LongTensor(Y)
X=torch.stack((X1,X2,X3),dim=1)
del X1,X2,X3
index = torch.randperm(len(Y))
X,Y = X[index],Y[index]

#2.定义神经网络层
class Model(nn.Module):
	def__int__(self):
		super(Model,self).__int__()
		self.fc1=nn.Linear(3,4)#3个输入特征,4个神经元
		self.fc2=nn.Linear(4,2)#承接上一个网络层的4个神经元,输出2个神经元(2个类别)
	def forward(self,x):
		out = self.fc1(x)
		out = torch.tanh(out)#使用激活函数tanh
		out = self.fc2(out)
		return out
#3.对网络进行训练
model=Model()
optimizer = torch.optim.Adam(model.parameters(),lr=0.01)
LS=[]
for epoch in range(5):
	i = 0
	for x,y in zip(X,Y):
	nn.CrossEntropyLoss()
	x = x.unsqueeze(0)
	pre_y = model(x)
	y = torch.LongTensor([y])
#4.损失函数(多分类任务:nn.CrossEntropyLoss()交叉熵函数) 
	loss = nn.CrossEntropyLoss()(prey_y,y)
	if i %50 == 0
		L.append(Loss.item())
	i+=1
	optimizer.zero_grad()
	loss.backward()
	optimizer.step()
#5.显示损失函数值变化趋势
plt.plot(LS)
plt.tick_params(labelsize=13)
plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False
plt.grid()
plt.xlabel("损失函数采样次序",fontsize=13)
plt.ylabel("交叉熵损失函数值",fontsize=13)
plt.show()

以上,本文内容参考自蒙祖强,欧元汉编著的《深度学习理论与应用》。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值