網(wǎng)站建設(shè)流程圖片優(yōu)化大師app
數(shù)據(jù)生成 | MATLAB實(shí)現(xiàn)MCMC馬爾科夫蒙特卡洛模擬的數(shù)據(jù)生成
目錄
- 數(shù)據(jù)生成 | MATLAB實(shí)現(xiàn)MCMC馬爾科夫蒙特卡洛模擬的數(shù)據(jù)生成
- 生成效果
- 基本描述
- 模型描述
- 程序設(shè)計(jì)
- 參考資料
生成效果
基本描述
1.MATLAB實(shí)現(xiàn)MCMC馬爾科夫蒙特卡洛模擬的數(shù)據(jù)生成;
2.馬爾科夫鏈蒙特卡洛方法(Markov Chain Monte Carlo),簡(jiǎn)稱MCMC,MCMC算法的核心思想是我們已知一個(gè)概率密度函數(shù),需要從這個(gè)概率分布中采樣,來分析這個(gè)分布的一些統(tǒng)計(jì)特性。
模型描述
馬爾科夫蒙特卡洛模擬(Markov Monte Carlo simulation)是一種基于馬爾科夫鏈的隨機(jī)模擬方法,用于生成服從某個(gè)特定分布的數(shù)據(jù)樣本。下面是使用馬爾科夫蒙特卡洛模擬生成數(shù)據(jù)的一般過程:
定義狀態(tài)空間:確定數(shù)據(jù)的可能取值范圍,可以是一個(gè)離散的狀態(tài)空間或者一個(gè)連續(xù)的狀態(tài)空間。
構(gòu)建轉(zhuǎn)移矩陣:根據(jù)問題的特點(diǎn),確定狀態(tài)之間的轉(zhuǎn)移概率。轉(zhuǎn)移矩陣描述了從一個(gè)狀態(tài)轉(zhuǎn)移到另一個(gè)狀態(tài)的概率。
初始化狀態(tài):從狀態(tài)空間中選擇一個(gè)初始狀態(tài)。
進(jìn)行模擬:根據(jù)轉(zhuǎn)移矩陣和當(dāng)前狀態(tài),按照一定的概率規(guī)則轉(zhuǎn)移到下一個(gè)狀態(tài)。重復(fù)這個(gè)過程多次,直到達(dá)到所需的樣本數(shù)量。
生成樣本:記錄每個(gè)狀態(tài)的取值,得到生成的數(shù)據(jù)樣本。
程序設(shè)計(jì)
- 完整程序和數(shù)據(jù)獲取方式:私信博主回復(fù)MATLAB實(shí)現(xiàn)MCMC馬爾科夫蒙特卡洛模擬的數(shù)據(jù)生成。
tempLayers = [convolution2dLayer([3, 1], 16, "Name", "conv_1", "Padding", "same") % 建立卷積層,卷積核大小[3, 1],16個(gè)特征圖reluLayer("Name", "relu_1") % Relu 激活層convolution2dLayer([3, 1], 32, "Name", "conv_2", "Padding", "same") % 建立卷積層,卷積核大小[3, 1],32個(gè)特征圖reluLayer("Name", "relu_2")]; % Relu 激活層
lgraph = addLayers(lgraph, tempLayers); % 將上述網(wǎng)絡(luò)結(jié)構(gòu)加入空白結(jié)構(gòu)中tempLayers = [sequenceUnfoldingLayer("Name", "sequnfold") % 建立序列反折疊層flattenLayer("Name", "flatten") % 網(wǎng)絡(luò)鋪平層lgraph = addLayers(lgraph, tempLayers); % 將上述網(wǎng)絡(luò)結(jié)構(gòu)加入空白結(jié)構(gòu)中
lgraph = connectLayers(lgraph, "seqfold/out", "conv_1"); % 折疊層輸出 連接 卷積層輸入
lgraph = connectLayers(lgraph, "seqfold/miniBatchSize", "sequnfold/miniBatchSize"); % 折疊層輸出連接反折疊層輸入
lgraph = connectLayers(lgraph, "relu_2", "sequnfold/in"); % 激活層輸出 連接 反折疊層輸入%% 參數(shù)設(shè)置
options = trainingOptions('adam', ... % Adam 梯度下降算法'MaxEpochs', 500,... % 最大訓(xùn)練次數(shù) 1000'InitialLearnRate', best_lr,... % 初始學(xué)習(xí)率為0.001'L2Regularization', best_l2,... % L2正則化參數(shù)'LearnRateSchedule', 'piecewise',... % 學(xué)習(xí)率下降'LearnRateDropFactor', 0.1,... % 學(xué)習(xí)率下降因子 0.1'LearnRateDropPeriod', 400,... % 經(jīng)過800次訓(xùn)練后 學(xué)習(xí)率為 0.001*0.1'Shuffle', 'every-epoch',... % 每次訓(xùn)練打亂數(shù)據(jù)集'ValidationPatience', Inf,... % 關(guān)閉驗(yàn)證'Plots', 'training-progress',... % 畫出曲線'Verbose', false);%% 訓(xùn)練
net = trainNetwork(p_train, t_train, lgraph, options);
參考資料
[1] https://blog.csdn.net/kjm13182345320/article/details/129036772?spm=1001.2014.3001.5502
[2] https://blog.csdn.net/kjm13182345320/article/details/128690229