脑脑之家AI智能体与大模型-手把手实操模型001-多层感知机MLP
本人比较喜欢历史对于AI也喜欢搞清楚它的来龙去脉。跟脑脑之家一起来探究多层感知机的前世今生大脑神经元人工神经网络感知机多层感知机多层感知机代码实操importtorchimporttorch.nnasnnimporttorch.optimasoptimfromtorchvisionimportdatasets,transformsfromtorch.utils.dataimportDataLoader# 定义MLP模型classMLP(nn.Module):def__init__(self,input_size,hidden_size,num_classes):super(MLP,self).__init__()self.fc1nn.Linear(input_size,hidden_size)self.relunn.ReLU()self.fc2nn.Linear(hidden_size,num_classes)defforward(self,x):outself.fc1(x)outself.relu(out)outself.fc2(out)returnout# 超参数设置input_size28*28# MNIST图像大小hidden_size500num_classes10num_epochs5batch_size100learning_rate0.001# 加载MNIST数据集train_datasetdatasets.MNIST(root./data,trainTrue,transformtransforms.ToTensor(),downloadTrue)train_loaderDataLoader(datasettrain_dataset,batch_sizebatch_size,shuffleTrue)# 初始化模型modelMLP(input_size,hidden_size,num_classes)# 定义损失函数和优化器criterionnn.CrossEntropyLoss()optimizeroptim.Adam(model.parameters(),lrlearning_rate)# 训练模型total_steplen(train_loader)forepochinrange(num_epochs):fori,(images,labels)inenumerate(train_loader):imagesimages.reshape(-1,28*28)# 前向传播outputsmodel(images)losscriterion(outputs,labels)# 反向传播和优化optimizer.zero_grad()loss.backward()optimizer.step()if(i1)%1000:print(fEpoch [{epoch1}/{num_epochs}], Step [{i1}/{total_step}], Loss:{loss.item():.4f})