深度學習技術基礎與實踐 課件 第4章-MindSpore實踐_第1頁
深度學習技術基礎與實踐 課件 第4章-MindSpore實踐_第2頁
深度學習技術基礎與實踐 課件 第4章-MindSpore實踐_第3頁
深度學習技術基礎與實踐 課件 第4章-MindSpore實踐_第4頁
深度學習技術基礎與實踐 課件 第4章-MindSpore實踐_第5頁
已閱讀5頁,還剩71頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第4章MindSpore實踐授課教師:時

間:01概述1.1概述神經網絡概述網絡通過數(shù)據(jù)“學習”網絡對新數(shù)據(jù)進行“預測”網絡訓練網絡推理經過訓練(Training)的神經網絡可以將其所學到的知識應用于現(xiàn)實世界的任務——圖像識別、圖像分割、語言翻譯等各種各樣的應用。神經網絡基于其所訓練的內容對新數(shù)據(jù)進行預測推導的過程就是推理。神經網絡概述02數(shù)據(jù)2.12.2數(shù)據(jù)集張量張量矩陣(2D張量)標量(0維張量)向量(1D張量)更高維張量僅包含一個數(shù)字的張量。在Numpy中,一個float32或float64的數(shù)字就是一個標量張量。數(shù)字組成的數(shù)組。一維張量只有一個軸。向量組成的數(shù)組。矩陣有2個軸,通常叫做行和列??梢詫⒕仃囍庇^地理解為數(shù)字組成的矩形網絡。將多個矩陣合成一個新的數(shù)組,可以得到一個3D張量。以此類推可以得到更高維的張量直觀理解張量Mindspore張量張量定義張量運算MindSpore中張量(Tensor)是一種簡潔而強大的數(shù)據(jù)結構算數(shù)運算線性代數(shù)矩陣處理(裝置,標引,切片)采樣Input_data參數(shù):TensorIntNumpy.arraydtype參數(shù):32mindspre.float64Mindspore張量實現(xiàn)importnumpyasnpfrommindsporeimportTensorfrommindsporeimportdtypeasmstypefrommindspore.opsimportoperationsasops//創(chuàng)建Tensordefinit_Tensor():a=Tensor(input_data=np.array([[1,2],[3,4]]),dtype=mstype.int32)b=Tensor(1.0,mstype.int32)c=Tensor(2)d=Tensor(True,mstype.bool_)e=Tensor((1,2,3),mstype.int16)f=Tensor(Tensor(1.0),mstype.float64)print(a,’\t’,b,’\t’,c,’\n’,d,’\t’,e,’\t’,f)Mindspore張量實現(xiàn)defcompute_Tensor():data1=Tensor(np.array([[0,1],[2,3]]).astype(np.float32))data2=Tensor(np.array([[4,5],[6,7]]).astype(np.float32))mul=ops.Mul()output_mul=mul(data1,data2)#對于合并和連接操作,輸入數(shù)據(jù)需要以列表或元組的形式執(zhí)行操作con=ops.Concat()output_con=con((data1,data2))sta=ops.Stack()output_sta=sta([data1,data2])print(’Mul操作\t\tConcat操作\t\tStack操作\n’,output_mul,’\t\t’,output_con,’\t\t’,output_sta)Mindspore張量實現(xiàn)if__name__==’__main__’:print(”初始化Tensor”)init_Tensor()print(”Tensor之間的運算”)compute_Tensor()Mindspore張量實現(xiàn)初始化Tensor[[1,2]12[3,4]]True[1,2,3]1.0Tensor之間的運算Mul操作Concat操作Stack操作[[0.,5.][[0.1.][[[0.1.][12.,21.]][2.3.][2.3.]][4.5.][[4.5.][6.7.]][6.7.]]]Mindspore數(shù)據(jù)集標準數(shù)據(jù)集數(shù)據(jù)預處理數(shù)據(jù)集加載數(shù)據(jù)集創(chuàng)建mindspore.dataset訪問標準數(shù)據(jù)集

mindspore提供了打亂數(shù)據(jù),分批等預處理接口create_dict_iterator接口用于數(shù)據(jù)加載通過實現(xiàn)__getitem__與__len__函數(shù)實現(xiàn)自定義數(shù)據(jù)用戶自定義數(shù)據(jù)集importmindspore.datasetasdsimportnumpyasnpnp.random.seed(58)classDatasetGenerator:’’’用戶自定義數(shù)據(jù)集類需實現(xiàn)__getitem__函數(shù)與__len__函數(shù)__len__:使迭代器能夠獲得數(shù)據(jù)總量__getitem__:能夠根據(jù)給定的索引值index,獲取數(shù)據(jù)集中的數(shù)據(jù)并返回。’’’def__init__(self):self.data=np.random.sample((5,2))self.label=np.random.sample((5,1))def__getitem__(self,index):returnself.data[index],self.label[index]def__len__(self):returnlen(self.data)用戶自定義數(shù)據(jù)集defbuildDS_from_Customer():dataset_generator=DatasetGenerator()dataset=ds.GeneratorDataset(dataset_generator,[”data”,”label”],shuffle=False)returndatasetMindspore標準數(shù)據(jù)集defbuildDS_from_MindSpore():#需提前下載cifar10數(shù)據(jù)集DATA_DIR=”/your/path/to/cifar10/train”sampler=ds.SequentialSampler(num_samples=5)dataset=ds.Cifar10Dataset(DATA_DIR,sampler=sampler)returndataset數(shù)據(jù)集預處理defpreprocessing(dataset):ds.config.set_seed(58)#隨機打亂數(shù)據(jù)順序dataset=dataset.shuffle(buffer_size=10)#對數(shù)據(jù)集進行分批dataset=dataset.batch(batch_size=2)returndataset測試代碼if__name__==’__main__’:print(”常見數(shù)據(jù)集”)dataset1=buildDS_from_MindSpore()fordataindataset1.create_dict_iterator():print(”Imageshape:{}”.format(data[’image’].shape),”,Label:{}”.format(data[’label’]))print(”自定義數(shù)據(jù)集”)dataset2=buildDS_from_Customer()fordataindataset2.create_dict_iterator():print(’{}’.format(data[”data”]),’{}’.format(data[”label”]))print(”打亂數(shù)據(jù)集”)dataset2=preprocessing(dataset2)fordataindataset2.create_dict_iterator():print(”data:{}”.format(data[”data”]))print(”label:{}”.format(data[”label”]))運行結果常見數(shù)據(jù)集Imageshape:(32,32,3),Label:6Imageshape:(32,32,3),Label:9Imageshape:(32,32,3),Label:9Imageshape:(32,32,3),Label:4Imageshape:(32,32,3),Label:1自定義數(shù)據(jù)集[0.365105580.45120592][0.78888122][0.496060350.07562207][0.38068183][0.571761580.28963401][0.16271622][0.308804460.37487617][0.54738768][0.815856670.96883469][0.77994068]運行結果打亂數(shù)據(jù)集data:[[0.365105580.45120592][0.571761580.28963401]]label:[[0.78888122][0.16271622]]data:[[0.308804460.37487617][0.496060350.07562207]]label:[[0.54738768][0.38068183]]data:[[0.815856670.96883469]]label:[[0.77994068]]03模型模塊3.13.23.3激活函數(shù)池化層卷積層3.4全連接層3.5Flatten層3.6自定義層模型模塊MindsporeCell類卷積層激活函數(shù)池化層Flatten層卷積層卷積層(Conv)通過定義卷積核,對數(shù)據(jù)進行卷積運算從而提取特征不同的卷積核參數(shù)能夠提取出不同的數(shù)據(jù)特征并濾除其他無關特征卷積層nn.conv2d,nn.conv3D創(chuàng)建2D,3D卷積函數(shù)in_channels:輸入通道數(shù)目out_channels:輸出通道數(shù)stride:步長pad_mode:填充模式卷積層卷積核的數(shù)量決定了特征圖的數(shù)量步長決定了卷積核每次移動的距離卷積步長與卷積核大小、填充模式共同決定了輸出圖像的尺寸大小激活函數(shù)01020304人工神經網絡神經元上的函數(shù)解決非線性問題理論上可以逼近任意函數(shù)用于神經網絡學習復雜函數(shù)sigmoid函數(shù)將實數(shù)映射到(0,1)平滑,易求導運算量大不服從0均值分布網絡深會出現(xiàn)梯度消失的問題Tanh函數(shù)以0為中心收斂快運算量大網絡深會出現(xiàn)梯度消失的問題ReLU函數(shù)稀疏激活性更強的表達能力會出現(xiàn)靜默神經元LeakyReLU函數(shù)負半?yún)^(qū)間引入泄露值未激活神經元仍然有很小的梯度減少靜默神經元產生概率尚未證明比ReLU更好MS中構建激活函數(shù)importnumpyasnpimportmindsporeimportmindspore.nnasnnfrommindsporeimportTensordefActivation():sigmoid=nn.Sigmoid()tanh=nn.Tanh()relu=nn.ReLU()leakyrelu=nn.LeakyReLU(0.2)input_x=Tensor(np.array([?1,2,?3,2,?1]),mindspore.float32)output_s=sigmoid(input_x)output_t=tanh(input_x)測試激活函數(shù)if__name__==’__main__’:print(”常見的激活函數(shù)”)Activation()常見的激活函數(shù)sigmoid[0,268941430,8807970,047425870,8807970,26894143]tanh[?0,76159420.9640276?0.99505480.9640276?0.7615942]relu[0.2.0.2.0.]leakyrelu[?0.22.?0.62.?0.2]池化層池化層(Pooling)也叫下采樣層,通常應用于卷積層之后,用于壓縮數(shù)據(jù)特征池化層不僅可以提高計算速度,還減小了過擬合常見的池化函數(shù)為最大池化(maxpool)與平均池化(avgpool)。MS中構建池化層importnumpyasnpimportmindsporeimportmindspore.nnasnnfrommindsporeimportTensordefPooling():max_pool2d=nn.MaxPool2d(kernel_size=2,stride=2)avg_pool2d=nn.AvgPool2d(kernel_size=2,stride=2)input_x=Tensor(np.array([[[[1,2,3,4],[1,2,3,4],[1,2,3,4],[1,2,3,4]]]]),mindspore.float32)MS中構建池化層avg_pool2d=nn.AvgPool2d(kernel_size=2,stride=2)input_x=Tensor(np.array([[[[1,2,3,4],[1,2,3,4],[1,2,3,4],[1,2,3,4]]]]),mindspore.float32)#對于2D池化,輸入Tensor的維度需為4#形如[B,C,W,H]#B:批數(shù)batchsize#C:通道數(shù)channels#W:寬度width#H:高度heightoutput_max=max_pool2d(input_x)output_avg=avg_pool2d(input_x)print(”max_pool2d\n”,output_max,”\navg_pool2d\n”,output_avg)測試池化層if__name__==’__main__’:print(”常見的池化層”)Pooling()max_pool2d[[[[2.4.][2.4.]]]]avg_pool2d[[[[1.53.5][1.53.5]]]]全連接層全連接層(Dense)通過對輸入矩陣進行線性變換從而改變Tensor的維度。通常與Flatten層配合使用MS中構建測試全連接層importnumpyasnpimportmindsporeimportmindspore.nnasnnfrommindsporeimportTensordefDense():dense=nn.Dense(400,120,weight_init=’normal’)input_x=Tensor(np.ones([1,400]),mindspore.float32)output=dense(input_x)returnoutput.Shapeif__name__==’__main__’: print(”Dense層”,Dense())Dense層(1,120)全連接層Flatten層用來將輸入“壓平”,即把多維的輸入一維化,常用于卷積層到全連接層的過渡。例如維度為[W,H,C]的Tensor經過Flatten層處理后,會轉換為長度為W*H*C的一維Tensor。MS中構建測試Flatten層importnumpyasnpimportmindsporeimportmindspore.nnasnnfrommindsporeimportTensordefFlatten():flatten=nn.Flatten()input_x=Tensor(np.ones([1,16,5,5]),mindspore.float32)output=flatten(input_x)returnoutput.Shapeif__name__==’__main__’:print(”flatten層”,Flatten())flatten層(1,400)自定義網絡自定義神經網絡結構時,網絡類需要繼承Cell類,并重寫__init__方法和construct方法。其中__init__函數(shù)用于實現(xiàn)父類初始化,而construct函數(shù)用于定義網絡的前向傳播方式。實例化網絡后,網絡各層參數(shù)會自動初始化,這些權重和偏置參數(shù)會在之后的訓練中逐漸優(yōu)化??梢酝ㄟ^使用parameters_and_names()方法訪問所有參數(shù)。MS中自定義LeNet#mynetwork.pyimportnumpyasnpimportmindsporeimportmindspore.nnasnnfrommindsporeimportTensorclassLeNet5(nn.Cell):def__init__(self,num_class=10,num_channel=1):super(LeNet5,self).__init__()#定義所需要的運算self.conv1=nn.Conv2d(num_channel,6,5,pad_mode=’valid’)self.conv2=nn.Conv2d(6,16,5,pad_mode=’valid’)self.fc1=nn.Dense(16?5?5,120)self.fc2=nn.Dense(120,84)self.fc3=nn.Dense(84,num_class)self.relu=nn.ReLU()self.max_pool2d=nn.MaxPool2d(kernel_size=2,stride=2)self.flatten=nn.Flatten()MS中自定義LeNetdefconstruct(self,x):#使用定義好的運算構建前向網絡x=self.conv1(x)x=self.relu(x)x=self.max_pool2d(x)x=self.conv2(x)x=self.relu(x)x=self.max_pool2d(x)x=self.flatten(x)x=self.fc1(x)x=self.relu(x)x=self.fc2(x)x=self.relu(x)x=self.fc3(x)returnx打印模型參數(shù)if__name__==’__main__’:model=LeNet5()print(”打印模型參數(shù)”)forminmodel.parameters_and_names():print(m)打印模型參數(shù)打印模型參數(shù)(’conv1.weight’,Parameter(name=conv1.weight,shape=(6,1,5,5),dtype=Float32,requires_grad=True))(’conv2.weight’,Parameter(name=conv2.weight,shape=(16,6,5,5),dtype=Float32,requires_grad=True))(’fc1.weight’,Parameter(name=fc1.weight,shape=(120,400),dtype=Float32,requires_grad=True))(’fc1.bias’,Parameter(name=fc1.bias,shape=(120,),dtype=Float32,requires_grad=True))(’fc2.weight’,Parameter(name=fc2.weight,shape=(84,120),dtype=Float32,requires_grad=True))(’fc2.bias’,Parameter(name=fc2.bias,shape=(84,),dtype=Float32,requires_grad=True))(’fc3.weight’,Parameter(name=fc3.weight,shape=(10,84),dtype=Float32,requires_grad=True))(’fc3.bias’,Parameter(name=fc3.bias,shape=(10,),dtype=Float32,requires_grad=True))04數(shù)據(jù)歸一化4.1數(shù)據(jù)歸一化數(shù)據(jù)歸一化重要性01隱藏層參數(shù)更新會導致輸出層分布改變0203隨著層數(shù)的增加分布偏移會被放大需要較小的學習率來訓練網絡,初始化參數(shù)會影響訓練效果批歸一化批歸一化(BatchNormalization,BN)是在minibatch維度上在每次訓練iteration時對隱藏層進行歸一化,通過參數(shù)在量級和尺度上做約束,緩和過擬合情況。批歸一化優(yōu)缺點提升訓練速度增加分類效果效果依賴于batchsize小batch效果較差導致batch中樣本細節(jié)丟失批歸一化優(yōu)缺點05損失函數(shù)5.1損失函數(shù)損失函數(shù)定義通過網絡結構進行前向計算實現(xiàn)前向傳播使用損失函數(shù)評估模型當前表現(xiàn),損失越小,效果越好將預測值和真實值的誤差方向傳播優(yōu)化參數(shù)經驗風險損失函數(shù)指預測結果和實際結果的差別結構風險損失函數(shù)是指經驗風險損失函數(shù)加上正則項。MS中構建損失函數(shù)importnumpyasnpimportmindspore.nnasnnfrommindsporeimportTensordefLOSS(output_data,target_data):L1loss=nn.L1Loss()MSELoss=nn.MSELoss()print(”L1loss”,L1loss(output_data,target_data))print(”MSELoss”,MSELoss(output_data,target_data))if__name__==’__main__’:output_data=Tensor(np.array([[1,2,3],[2,3,4]]).astype(np.float32))target_data=Tensor(np.array([[0,2,5],[3,1,1]]).astype(np.float32))LOSS(output_data,target_data)L1loss1.5MSELoss3.166666706優(yōu)化器6.1優(yōu)化器Mindspore優(yōu)化器frommindsporeimportnnfrommynetworkimportLeNet5optim=nn.SGD(params=LeNet5.trainable_params(),learning_rate=0.1)optim=nn.Adam(params=LeNet5.trainable_params(),learning_rate=0.1)得到模型預測誤差后,需要通過梯度下降將其反向傳播以優(yōu)化參數(shù)模型優(yōu)化算法的選擇直接關系到最終模型的性能07訓練7.1訓練訓練得到模型預測誤差后,需要通過梯度下降將其反向傳播以優(yōu)化參數(shù)。MindSpore框架支持三種設備,分別為CPU,GPU與華為Ascend芯片MS中訓練LeNetimportmindspore.datasetasdsimportmindspore.dataset.transforms.c_transformsasCimportmindspore.dataset.vision.c_transformsasCVfrommindsporeimportnn,Tensor,Modelfrommindsporeimportdtypeasmstypefrommindspore.train.callbackimportModelCheckpoint,CheckpointConfigfrommindsporeimportcontextfrommynetworkimportLeNet5#使用CPU訓練,若想改用GPU訓練只需修改device_target.MindSpore支持”Ascend”,”GPU”與”CPU”.context.set_context(mode=context.GRAPH_MODE,device_target=”CPU”)DATA_DIR=”your/path/tp/cifar10/train”net=LeNet5()#定義學習率等超參epochs=5batch_size=64learning_rate=1e?3MS中訓練LeNet#構建數(shù)據(jù)集sampler=ds.SequentialSampler(num_samples=128)dataset=ds.Cifar10Dataset(DATA_DIR,sampler=sampler)#數(shù)據(jù)類型轉換type_cast_op_image=C.TypeCast(mstype.float32)type_cast_op_label=C.TypeCast(mstype.int32)HWC2CHW=CV.HWC2CHW()dataset=dataset.map(operations=[type_cast_op_image,HWC2CHW],input_columns=”image”)dataset=dataset.map(operations=type_cast_op_label,input_columns=”label”)dataset=dataset.batch(batch_size)optim=nn.SGD(params=net.trainable_params(),learning_rate=learning_rate)loss=nn.SoftmaxCrossEntropyWithLogits(sparse=True,reduction=’mean’)#輸入訓練輪次和數(shù)據(jù)集進行訓練model=Model(net,loss_fn=loss,optimizer=optim)model.train(epoch=epochs,train_dataset=dataset)08模型保存與加載1.2模型保存與加載模型保存與加載在模型訓練的過程中,考慮到不可抗因素,需要及時存儲模型參數(shù)。得到Checkpoint文件實際是對應模型的參數(shù)字典。加載模型權重時,需要先創(chuàng)建相同模型的實例load_checkpoint方法會把參數(shù)文件中的網絡參數(shù)加載到字典param_dictload_param_into_net方法則會將讀取的字典進行加載至網絡實例中。MS中保存模型#定義回調對象與回調策略用于保存函數(shù)參數(shù)config_ck=CheckpointConfig(save_checkpoint_steps=32,keep_checkpoint_max=10)ckpt_cb=ModelCheckpoint(prefix=’resnet50’,directory=None,config=config_ckpt)’’’save_checkpoint_steps:每隔多少個step保存一次。keep_checkpoint_max:最多保留CheckPoint文件的數(shù)量。prefix:生成CheckPoint文件的前綴名。directory:存放文件的目錄’’’#輸入訓練輪次和數(shù)據(jù)集進行訓練model.train(epoch=epochs,train_dataset=dataset,callbacks=ckpt_cb)MS中加載模型frommindsporeimportload_checkpoint,load_param_into_netresnet=ResNet50()#將模型參數(shù)存入parameter的字典中param_dict=load_checkpoint(”/path/to/ckpt.ckpt”)#將參數(shù)加載到網絡中l(wèi)oad_param_into_net(resnet,param_dict)model=Model(resnet,loss,metrics={”accuracy”})09鳶尾花實驗9.1鳶尾花實驗鳶尾花數(shù)據(jù)集著名的統(tǒng)計學家和生物學家R.AFisher用其作為線性判別分析的一個例子收集了三類鳶尾花,即Setosa鳶尾花、Versicolour鳶尾花和Virginica鳶尾花數(shù)據(jù)集包括4個屬性,分別為花萼的長、花萼的寬、花瓣的長和花瓣的寬在加拿大加斯帕半島上,于同一天的同一個時間段,使用相同的測量儀器,在相同的牧場上由同一個人測量出來的鳶尾花數(shù)據(jù)集使用配置文件cfg=edict({’data_size’:150,’train_size’:120,#訓練集大小’test_size’:30,#測試集大小’feature_number’:4,#輸入特征數(shù)’num_class’:3,#分類類別’batch_size’:30,’data_dir’:’iris.data’,’save_checkpoint_steps’:5,#多少步保存一次模型’keep_checkpoint_max’:1,#最多保存多少個模型’out_dir_no_opt’:’./model_iris/no_opt’,#保存模型路徑,無優(yōu)化器模型’out_dir_sgd’:’./model_iris/sgd’,#保存模型路徑,SGD優(yōu)化器模型’out_dir_momentum’:’./model_iris/momentum’,#保存模型路徑,momentum模型’out_dir_adam’:’./model_iris/adam’,#保存模型路徑,adam優(yōu)化器模型’output_prefix’:”checkpoint_fashion_forward”#保存模型文件名})使用配置文件#將數(shù)據(jù)集分為訓練集120條,測試集30條。train_idx=np.random.choice(cfg.data_size,cfg.train_size,replace=False)test_idx=np.array(list(set(range(cfg.data_size))?set(train_idx)))X_train,Y_train=X[train_idx],Y[train_idx]X_test,Y_test=X[test_idx],Y[test_idx]defgen_data(X_train,Y_train,epoch_size):XY_train=list(zip(X_train,Y_train))ds_train=dataset.GeneratorDataset(XY_train,[’x’,’y’])ds_train=ds_train.shuffle(buffer_size=cfg.train_size).batch(cfg.batch_size,drop_remainder=True)XY_test=list(zip(X_test,Y_test))ds_test=dataset.GeneratorDataset(XY_test,[’x’,’y’])ds_test=ds_test.shuffle(buffer_size=cfg.test_size).batch(cfg.test_size,drop_remainder=True)returnds_train,ds_test定義訓練測試過程importcsvimportosimporttimeimportnumpyasnpfromeasydictimportEasyDictasedictfrommatplotlibimportpyplotaspltimportmindsporefrommindsporeimportnnfrommindsporeimportcontextfrommindsporeimportdatasetfrommindspore.train.callbackimportTimeMonitor,LossMonitorfrommindsporeimportTensorfrommindspore.train.callbackimportModelCheckpoint,CheckpointConfigfrommindspore.trainimportModelcontext.set_context(mode=context.GRAPH_MODE,device_target=”Ascend”)導入必需包后,選用經典的交叉熵損失作為模型損失函數(shù),定義訓練、測試以及預測過程。訓練函數(shù)傳入模型實例,優(yōu)化器、數(shù)據(jù)集等參數(shù)。定義訓練測試過程#訓練deftrain(network,net_opt,ds_train,prefix,directory,print_times):net_loss=nn.SoftmaxCrossEntropyWithLogits(is_grad=False,sparse=True,reduction=”mean”)model=Model(network,loss_fn=net_loss,optimizer=net_opt,metrics={”acc”})loss_cb=LossMonitor(per_print_times=print_times)config_ck=CheckpointConfig(save_checkpoint_steps=cfg.save_checkpoint_steps,keep_checkpoint_max=cfg.keep_checkpoint_max)ckpoint_cb=ModelCheckpoint(prefix=prefix,directory=directory,config=config_ck)print(”==============StartingTraining==============”)model.train(epoch_size,ds_train,callbacks=[ckpoint_cb,loss_cb],dataset_sink_mode=False)returnmodel定義訓練測試過程#評估預測defeval_predict(model,ds_test):#使用測試集評估模型,打印總體準確率metric=model.eval(ds_test,dataset_sink_mode=False)print(metric)#預測test_=ds_test.create_dict_iterator().get_next()test=Tensor(test_[’x’],mindspore.float32)predictions=model.predict(test)predictions=predictions.asnumpy()foriinrange(10):p_np=predictions[i,:]p_list=p_np.tolist()print(’第’+str(i)+’個sample預測結果:’,p_list.index(max(p_list)),’真實結果:’,test_[’y’][i])無優(yōu)化器訓練#??????????????????????????????????????????????????無優(yōu)化器???????????????????????????????????epoch_size=20print(’??????????????????無優(yōu)化器??????????????????????????’)#數(shù)據(jù)ds_train,ds_test=gen_data(X_train,Y_train,epoch_size)#定義網絡并訓練network=nn.Dense(cfg.feature_number,cfg.num_class)model=train(network,None,ds_train,”checkpoint_no_opt”,cfg.out_dir_no_opt,4)#評估預測eval_predict(model,ds_test)使用SGD優(yōu)化器訓練#???????????????????????????????????????????????????SGD???

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論