当前位置: 首页 > news >正文

唐山建网站公司家电网站建设总体目标

唐山建网站公司,家电网站建设总体目标,企业策划书模板范文大学生,无锡网站建设工作室目录 1. 联邦学习介绍 2. 实验流程 3. 数据加载 4. 模型构建 5. 数据采样函数 6. 模型训练 1. 联邦学习介绍 联邦学习是一种分布式机器学习方法#xff0c;中心节点为server#xff08;服务器#xff09;#xff0c;各分支节点为本地的client#xff08;设备#…目录 1. 联邦学习介绍 2. 实验流程 3. 数据加载 4. 模型构建 5. 数据采样函数 6. 模型训练 1. 联邦学习介绍 联邦学习是一种分布式机器学习方法中心节点为server服务器各分支节点为本地的client设备。联邦学习的模式是在各分支节点分别利用本地数据训练模型再将训练好的模型汇合到中心节点获得一个更好的全局模型。 联邦学习的提出是为了充分利用用户的数据特征训练效果更佳的模型同时为了保证隐私联邦学习在训练过程中server和clients之间通信的是模型的参数或梯度、参数更新量本地的数据不会上传到服务器。 本项目主要是升级1.8版本的联邦学习fedavg算法至2.3版本内容取材于基于PaddlePaddle实现联邦学习算法FedAvg - 飞桨AI Studio星河社区 2. 实验流程 联邦学习的基本流程是 1. server初始化模型参数所有的clients将这个初始模型下载到本地 2. clients利用本地产生的数据进行SGD训练 3. 选取K个clients将训练得到的模型参数上传到server 4. server对得到的模型参数整合所有的clients下载新的模型。 5. 重复执行2-5直至收敛或达到预期要求 import os import numpy as np import matplotlib import matplotlib.pyplot as plt import random import time import paddle import paddle.nn as nn import numpy as np from paddle.io import Dataset,DataLoader import paddle.nn.functional as F3. 数据加载 mnist_data_trainnp.load(data/data2489/train_mnist.npy) mnist_data_testnp.load(data/data2489/test_mnist.npy) print(There are {} images for training.format(len(mnist_data_train))) print(There are {} images for testing.format(len(mnist_data_test))) # 数据和标签分离便于后续处理 Label[int(i[0]) for i in mnist_data_train] Data[i[1:] for i in mnist_data_train]There are 60000 images for training There are 10000 images for testing4. 模型构建 class CNN(nn.Layer):def __init__(self):super(CNN,self).__init__()self.conv1nn.Conv2D(1,32,5)self.relu nn.ReLU()self.pool1nn.MaxPool2D(kernel_size2,stride2)self.conv2nn.Conv2D(32,64,5)self.pool2nn.MaxPool2D(kernel_size2,stride2)self.fc1nn.Linear(1024,512)self.fc2nn.Linear(512,10)# self.softmax nn.Softmax()def forward(self,inputs):x self.conv1(inputs)x self.relu(x)x self.pool1(x)x self.conv2(x)x self.relu(x)x self.pool2(x)xpaddle.reshape(x,[-1,1024])x self.relu(self.fc1(x))y self.fc2(x)return y5. 数据采样函数 # 均匀采样分配到各个client的数据集都是IID且数量相等的 def IID(dataset, clients):num_items_per_client int(len(dataset)/clients)client_dict {}image_idxs [i for i in range(len(dataset))]for i in range(clients):client_dict[i] set(np.random.choice(image_idxs, num_items_per_client, replaceFalse)) # 为每个client随机选取数据image_idxs list(set(image_idxs) - client_dict[i]) # 将已经选取过的数据去除client_dict[i] list(client_dict[i])return client_dict# 非均匀采样同时各个client上的数据分布和数量都不同 def NonIID(dataset, clients, total_shards, shards_size, num_shards_per_client):shard_idxs [i for i in range(total_shards)]client_dict {i: np.array([], dtypeint64) for i in range(clients)}idxs np.arange(len(dataset))data_labels Labellabel_idxs np.vstack((idxs, data_labels)) # 将标签和数据ID堆叠label_idxs label_idxs[:, label_idxs[1,:].argsort()]idxs label_idxs[0,:]for i in range(clients):rand_set set(np.random.choice(shard_idxs, num_shards_per_client, replaceFalse)) shard_idxs list(set(shard_idxs) - rand_set)for rand in rand_set:client_dict[i] np.concatenate((client_dict[i], idxs[rand*shards_size:(rand1)*shards_size]), axis0) # 拼接return client_dictclass MNISTDataset(Dataset):def __init__(self, data,label):self.data dataself.label labeldef __getitem__(self, idx):imagenp.array(self.data[idx]).astype(float32)imagenp.reshape(image,[1,28,28])labelnp.array(self.label[idx]).astype(int64)return image, labeldef __len__(self):return len(self.label) 6. 模型训练 class ClientUpdate(object):def __init__(self, data, label, batch_size, learning_rate, epochs):dataset MNISTDataset(data,label)self.train_loader DataLoader(dataset,batch_sizebatch_size,shuffleTrue,drop_lastTrue)self.learning_rate learning_rateself.epochs epochsdef train(self, model):optimizerpaddle.optimizer.SGD(learning_rateself.learning_rate,parametersmodel.parameters())criterion nn.CrossEntropyLoss(reductionmean)model.train()e_loss []for epoch in range(1,self.epochs1):train_loss []for image,label in self.train_loader:# imagepaddle.to_tensor(image)# labelpaddle.to_tensor(label.reshape([label.shape[0],1]))outputmodel(image)loss criterion(output,label)# print(loss)loss.backward()optimizer.step()optimizer.clear_grad()train_loss.append(loss.numpy()[0])t_losssum(train_loss)/len(train_loss)e_loss.append(t_loss)total_losssum(e_loss)/len(e_loss)return model.state_dict(), total_losstrain_x np.array(Data) train_y np.array(Label)BATCH_SIZE 32 # 通信轮数 rounds 100 # client比例 C 0.1 # clients数量 K 100 # 每次通信在本地训练的epoch E 5 # batch size batch_size 10 # 学习率 lr0.001 # 数据切分 iid_dict IID(mnist_data_train, 100)def training(model, rounds, batch_size, lr, ds,L, data_dict, C, K, E, plt_title, plt_color):global_weights model.state_dict()train_loss []start time.time()# clients与server之间通信for curr_round in range(1, rounds1):w, local_loss [], []m max(int(C*K), 1) # 随机选取参与更新的clientsS_t np.random.choice(range(K), m, replaceFalse)for k in S_t:# print(data_dict[k])sub_data ds[data_dict[k]]sub_y L[data_dict[k]]local_update ClientUpdate(sub_data,sub_y, batch_sizebatch_size, learning_ratelr, epochsE)weights, loss local_update.train(model)w.append(weights)local_loss.append(loss)# 更新global weightsweights_avg w[0]for k in weights_avg.keys():for i in range(1, len(w)):# weights_avg[k] (num[i]/sum(num))*w[i][k]weights_avg[k]weights_avg[k]w[i][k] weights_avg[k]weights_avg[k]/len(w)global_weights[k].set_value(weights_avg[k])# global_weights weights_avg# print(global_weights)#模型加载最新的参数model.load_dict(global_weights)loss_avg sum(local_loss) / len(local_loss)if curr_round % 10 0:print(Round: {}... \tAverage Loss: {}.format(curr_round, np.round(loss_avg, 5)))train_loss.append(loss_avg)end time.time()fig, ax plt.subplots()x_axis np.arange(1, rounds1)y_axis np.array(train_loss)ax.plot(x_axis, y_axis, tab:plt_color)ax.set(xlabelNumber of Rounds, ylabelTrain Loss,titleplt_title)ax.grid()fig.savefig(plt_title.jpg, formatjpg)print(Training Done!)print(Total time taken to Train: {}.format(end-start))return model.state_dict()#导入模型 mnist_cnn CNN() mnist_cnn_iid_trained training(mnist_cnn, rounds, batch_size, lr, train_x,train_y, iid_dict, C, K, E, MNIST CNN on IID Dataset, orange)W0605 23:22:00.961916 10307 gpu_context.cc:278] Please NOTE: device: 0, GPU Compute Capability: 7.0, Driver API Version: 11.2, Runtime API Version: 10.1 W0605 23:22:00.966121 10307 gpu_context.cc:306] device: 0, cuDNN Version: 7.6.Round: 10... Average Loss: 0.033 Round: 20... Average Loss: 0.011 Round: 30... Average Loss: 0.012 Round: 40... Average Loss: 0.008 Round: 50... Average Loss: 0.003 Round: 60... Average Loss: 0.002 Round: 70... Average Loss: 0.001 Round: 80... Average Loss: 0.001 Round: 90... Average Loss: 0.001
http://www.w-s-a.com/news/386871/

相关文章:

  • dede网站 地图什么做有没有做黑市网站
  • 做网站参考文献域名如何做网站
  • 怎么选择网站开发英文网站建设用途
  • 怎样做电子商务网站织梦生成手机网站
  • 公司网站建设选什么服务器网站里怎样添加关键词
  • 深圳建设局网站深业中城绿化项目营销型网站开发流程包括
  • 找销售的网站九江市建设项目服务中心
  • 东原ARC网站建设公司合肥seo网站推广外包
  • 那个网站是做房产中介的网站制作软件小学
  • 做网页怎么建站点视频解析网站
  • 做网站的系统设计网站设计论文前言
  • 做外贸网站多久更新汕头市建设局网站首页
  • 如何建设专业化的网站手机管理网站模板
  • 花生壳做网站如何用腾讯云做网站
  • 搭建集团网站开发app需要哪些软件
  • 网站建设 中企动力福州阀门wordpress 多说评论
  • php网站集成支付宝接口下载免费网络软件
  • 卡盟网站是怎么建设的用花生壳做网站速度可以吗
  • 杭州物联网前十名公司优秀seo平台
  • 网新中英企业网站管理系统wordpress 登录 缓存
  • wordpress模板建站教程wordpress添加广告位手机自适应
  • h5游戏平台入口优化是什么梗
  • 建设银行对公网站打不开网络推广活动方案主题和思路
  • 茶叶网站开发目的和意义网页设计需要考什么证
  • 高端企业网站建设公司怎么做实用性建设网站都需要哪些
  • 网站备案必须要幕布吗易企秀网站怎么做轮播图
  • 南昌网站排名优化四线城市网站建设方向及营利点
  • 做网站需要钱吗unity 做网站
  • 呼伦贝尔市规划建设局网站wordpress怎么考别人的
  • 免备案自助建站网站成都神速建站