本文目錄一覽:
- 1、有沒有用python實現的遺傳演算法優化BP神經網路的代碼
- 2、python做BP神經網路,進行數據預測,訓練的輸入和輸出值都存在負數,為什麼預測值永遠為正數?
- 3、BP神經網路——Python簡單實現三層神經網路(Numpy)
有沒有用python實現的遺傳演算法優化BP神經網路的代碼
下面是函數實現的代碼部分:
clc
clear all
close all
%% 載入神經網路的訓練樣本 測試樣本每列一個樣本 輸入P 輸出T,T是標籤
%樣本數據就是前面問題描述中列出的數據
%epochs是計算時根據輸出誤差返回調整神經元權值和閥值的次數
load data
% 初始隱層神經元個數
hiddennum=31;
% 輸入向量的最大值和最小值
threshold=[0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1];
inputnum=size(P,1); % 輸入層神經元個數
outputnum=size(T,1); % 輸出層神經元個數
w1num=inputnum*hiddennum; % 輸入層到隱層的權值個數
w2num=outputnum*hiddennum;% 隱層到輸出層的權值個數
N=w1num+hiddennum+w2num+outputnum; %待優化的變數的個數
%% 定義遺傳演算法參數
NIND=40; %個體數目
MAXGEN=50; %最大遺傳代數
PRECI=10; %變數的二進位位數
GGAP=0.95; %代溝
px=0.7; %交叉概率
pm=0.01; %變異概率
trace=zeros(N+1,MAXGEN); %尋優結果的初始值
FieldD=[repmat(PRECI,1,N);repmat([-0.5;0.5],1,N);repmat([1;0;1;1],1,N)]; %區域描述器
Chrom=crtbp(NIND,PRECI*N); %初始種群
%% 優化
gen=0; %代計數器
X=bs2rv(Chrom,FieldD); %計算初始種群的十進位轉換
ObjV=Objfun(X,P,T,hiddennum,P_test,T_test); %計算目標函數值
while gen
python做BP神經網路,進行數據預測,訓練的輸入和輸出值都存在負數,為什麼預測值永遠為正數?
因為sigmoid就是預測0到1之間的連續值。通常當二分類預測使用,你的問題是否複合二分類如果可以就把類別換成0和1就可以了,如果是做回歸那就不行了,要換其他損失函數
BP神經網路——Python簡單實現三層神經網路(Numpy)
我們將在Python中創建一個NeuralNetwork類,以訓練神經元以給出準確的預測。該課程還將具有其他幫助程序功能。
1. 應用Sigmoid函數
我們將使用 Sigmoid函數 (它繪製一條「 S」形曲線)作為神經網路的激活函數。
2. 訓練模型
這是我們將教神經網路做出準確預測的階段。每個輸入將具有權重(正或負)。
這意味著具有大量正權重或大量負權重的輸入將對結果輸出產生更大的影響。
我們最初是將每個權重分配給一個隨機數。
本文參考翻譯於此網站 —— 原文
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/308802.html