毕业设计:基于卷积神经网络协同推断仿真系统

在树莓派和PC机上分别安装Python以及PyTorch,提供神经网络的运行环境。

(1)将cloud文件夹放到PC机上,运行initCloud.py文件,启动服务端。

(2)将mobile文件夹放到树莓派上,运行initMobile.py文件,传入参数分别为模型名称和最大可接受费用。程序将根据网速、费用等因素进行最优决策,得到神经网络模型每一层的最优运行位置(在移动端或者云端),程序根据卸载决策分配计算任务,完成神经网络模型的推断计算。

程序说明:

cloud和mobile目录分别代表云端和移动端运行程序,使用PC机仿真云端,树莓派仿真移动端。

本实验在cifar-10数据集上训练了AlexNet和VGG16模型。其中datasets目录存放cifar-10数据集,model目录存放训练好的CNN模型。程序借助PyTorch框架的特性,改写模型的forward方法,训练模型后,以层为粒度运行计算任务,实现模型的分层推断。

def forward(self, x, startLayer, endLayer, isTrain):
	if isTrain:
	x = self.features(x)
	x = x.view(x.size(0), 2*2*128)
	x = self.classifier(x)
else:
	if startLayer==endLayer:
		if startLayer==10:
			x = x.view(x.size(0), 2*2*128)
			x = self.classifier[startLayer-10](x)
		elif startLayer<10:
			x = self.features[startLayer](x)
		else:
			x = self.classifier[startLayer-10](x)
	else:
		for i in range(startLayer, endLayer+1):
			if i<10:
				x = self.features[i](x)
			elif i==10:
				x = x.view(x.size(0), 2*2*128)
				x = self.classifier[i-10](x)
			else:
				x = self.classifier[i-10](x)
return x

Cloud部分程序
在这里插入图片描述
mobile部分程序
在这里插入图片描述
VGG16模型结构

import torch.nn as nn

NUM_CLASSES = 10

class VGG16Layer(nn.Module):
	def __init__(self, num_classes=NUM_CLASSES):
		super(VGG16Layer, self).__init__()
		self.features = nn.Sequential(
			nn.Conv2d(3, 64, kernel_size=3, stride=1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

毕业小助手

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值