利用torch.nn实现前馈神经网络解决 二分类 任务
神经网络 实现 解决 利用 任务 分类 torch NN
2023-09-14 09:08:53 时间
1导入实验所需要的包
import torch
import numpy as np
import random
from IPython import display
from matplotlib import pyplot as plt
from torch import nn
import torch.utils.data as Data
import torch.optim as optim
from torch.nn import init
import os
os.environ["KMP_DUPLICATE_LIB_OK"] = "TRUE"
2自定义数据
num_inputs = 200
x1 = torch.normal(2,1,(10000, num_inputs))
y1 = torch.ones(10000,1) # 标签1
x1_train = x1[:7000]
x1_test = x1[7000:]
x2 = torch.normal(-2,1,(10000, num_inputs))
y2 = torch.zeros(10000,1) # 标签0
x2_train = x2[:7000]
x2_test = x2[7000:]
# 注意 x, y 数据的数据形式一定要像下面一样 (torch.cat 是合并数据)---按行合并
trainfeatures = torch.cat((x1_train,x2_train), 0).type(torch.FloatTensor) #[14000, 200]
trainlabels = torch.cat((y1[:7000], y2[:7000]), 0).type(torch.FloatTensor) #[14000, 1]
testfeatures = torch.cat((x1_test,x2_test), 0).type(torch.FloatTensor) #[6000, 200]
testlabels = torch.cat((y1[7000:], y2[7000:]), 0).type(torch.FloatTensor) #[6000, 1]
3 读取数据
batch_size = 50
dataset = Data.TensorDataset(trainfeatures, trainlabels)
train_iter = Data.DataLoader(dataset=dataset, batch_size=batch_size, shuffle=True, num_workers=0 )
4 模型定义和参数初始化
#模型定义和参数初始化
num_hiddens,num_outputs = 256,1
net = nn.Sequential(
nn.Linear(num_inputs,num_hiddens),
nn.ReLU(),
nn.Linear(num_hiddens,num_outputs)
)
for params in net.parameters():
init.normal_(params,mean=0,std=0.01)
5 定义交叉熵损失函数和优化器
lr = 0.0005
num_epochs = 100
loss_fn = torch.nn.BCEWithLogitsLoss()
optimizer = torch.optim.SGD(net.parameters(),lr)
6 定义模型训练函数
#定义模型训练函数
def train(net,train_iter,loss_fn,num_epochs,batch_size,params=None,lr=None,optimizer=None):
train_ls = []
test_ls = []
for epoch in range(num_epochs):
train_l_sum, train_acc_num,n = 0.0,0.0,0
for X, y in train_iter:
y_hat = net(X)
loss = loss_fn(y_hat, y)
optimizer.zero_grad()
loss.backward()
optimizer.step()
train_l_sum += loss.item()*y.shape[0]
n+= y.shape[0]
train_labels = trainlabels.view(-1,1)
test_labels = testlabels.view(-1,1)
train_ls.append(train_l_sum/n)
test_ls.append(loss_fn(net(testfeatures),test_labels).item()*testfeatures.shape[0])
print('epoch %d,train_loss %.6f,test_loss %f'%(epoch+1,train_ls[epoch],test_ls[epoch]))
return train_ls,test_ls
7 开始训练模型
train_loss,test_loss = train(net,train_iter,loss_fn,num_epochs,batch_size,net.parameters,lr,optimizer)
相关文章
- 机器学习入门16 - 多类别神经网络 (Multi-Class Neural Networks)
- Python使用numpy实现BP神经网络
- MAT之NSL:SOFM神经网络实现预测哪个样本与哪个样本处在同一层,从而科学规避我国煤矿突水灾难
- CV之IC之VGG16:基于Keras框架利用卷积神经网络VGG16算法的迁移技术实现猫狗分类识别(图片数据增强→保存h5模型)案例训练过程记录
- CV之IC之AlexNet:基于Keras框架利用卷积神经网络类AlexNet算法实现猫狗分类识别(图片数据增强→保存h5模型→加载模型)案例应用
- DL之CNN:模型可解释性之卷积神经网络算法的卷积原理可视化——CNN网络的3D可视化(LeNet-5为例可视化)
- 【可再生能源场景生成】使用生成对抗性网络的数据驱动场景生成方法研究(该方法基于两个互连的深度神经网络与基于概率模型的现有方法相比)(Python代码实现)
- 【负荷预测】基于蚂蚁优化算法的BP神经网络在负荷预测中的应用研究(Matlab完整代码实现)
- 基于模糊BP神经网络轨迹跟踪(Matlab代码实现)
- 利用 MLP(多层感知器)和 RBF(径向基函数)神经网络解决的近似和分类示例问题(Matlab代码实现)
- MATLB|基于小波神经网络的短时交通流量时间序列预测
- 基于萤火虫算法优化的BP神经网络预测模型(Matlab代码实现)
- 基于Elman神经网络质量阻尼弹簧系统的研究(Matlab代码实现)
- 有监督学习神经网络的回归拟合——基于红外光谱的汽油辛烷值预测(Matlab代码实现)
- (Matlab实现)CNN卷积神经网络图片分类
- RNN神经网络的输入输出维度的关系
- 使用matlab深度学习工具箱实现CNN卷积神经网络训练仿真
- 【NLP】第 8 章:使用基于注意力的神经网络构建聊天机器人
- 基于头脑风暴优化的BP神经网络(预测应用) - 附代码
- Python实现哈里斯鹰优化算法(HHO)优化BP神经网络回归模型(BP神经网络回归算法)项目实战
- Python实现哈里斯鹰优化算法(HHO)优化循环神经网络分类模型(LSTM分类算法)项目实战
- Python实现GWO智能灰狼优化算法优化循环神经网络分类模型(LSTM分类算法)项目实战
- Python实现PSO粒子群优化循环神经网络LSTM回归模型项目实战
- Python实现PSO粒子群优化循环神经网络LSTM分类模型项目实战
- 【人工智能】卷积神经网络(Convolutional Neural Network)
- 利用torch.nn实现前馈神经网络解决 回归 任务
- 利用torch.nn实现前馈神经网络解决 多分类 任务
- 循环神经网络(RNN, Recurrent Neural Networks)——无非引入了环,解决时间序列问题
- 【北京大学】12 TensorFlow1.x的卷积神经网络模型VGGNet实现
- 第二周:神经网络的编程基础(Basics of Neural Network programming)
- 【AI with ML】第 7 章 :用于自然语言处理的递归神经网络
- 七层神经网络 PK logstic 回归
- 可视化理解卷积神经网络