GPU เร่งเครือข่ายประสาทใน JavaScript สำหรับเบราว์เซอร์และ node.js
brain.js เป็นห้องสมุดเร่งความเร็ว GPU สำหรับเครือข่ายประสาทที่เขียนด้วย JavaScript
นี่คือความต่อเนื่องของ Harthur/Brain ซึ่งไม่ได้รับการดูแลอีกต่อไป ข้อมูลเพิ่มเติม
RNNTimeStep , LSTMTimeStep และ GRUTimeStepRNN , LSTM และ GRUAElikelytoSVG หากคุณสามารถติดตั้ง brain.js ด้วย NPM:
npm install brain.js < script src =" //unpkg.com/brain.js " > </ script >ดาวน์โหลด Brain.js ล่าสุดสำหรับเบราว์เซอร์
Brain.js ขึ้นอยู่กับโมดูล Native headless-gl สำหรับการสนับสนุน GPU ในกรณีส่วนใหญ่การติดตั้ง brain.js จาก NPM ควรใช้งานได้ อย่างไรก็ตามหากคุณพบปัญหานี่หมายความว่าไบนารีที่สร้างไว้ล่วงหน้าไม่สามารถดาวน์โหลดได้จากที่เก็บ GitHub และคุณอาจต้องสร้างมันเอง
โปรดตรวจสอบให้แน่ใจว่ามีการติดตั้งการพึ่งพาต่อไปนี้และทันสมัยแล้วเรียกใช้:
npm rebuildbuild-essential บน apt )sudo apt-get install -y build-essential libglew-dev libglu1-mesa-dev libxi-dev pkg-confignpm config set msvs_version 2022 หมายเหตุ: สิ่งนี้ไม่ทำงานใน NPM รุ่นที่ทันสมัยอีกต่อไปnpm config set python python3 หมายเหตุ: สิ่งนี้ไม่ทำงานใน NPM รุ่นที่ทันสมัยอีกต่อไป * หากคุณใช้ Build Tools 2017 ให้เรียกใช้ npm config set msvs_version 2017 หมายเหตุ: สิ่งนี้ไม่ทำงานใน NPM รุ่นที่ทันสมัยอีกต่อไป
นี่คือตัวอย่างที่แสดงวิธีการประมาณฟังก์ชั่น XOR โดยใช้ brain.js : ข้อมูลเพิ่มเติมเกี่ยวกับการกำหนดค่าที่นี่
การแนะนำ Brain.js สนุกและใช้งานได้จริง
// provide optional config object (or undefined). Defaults shown.
const config = {
binaryThresh : 0.5 ,
hiddenLayers : [ 3 ] , // array of ints for the sizes of the hidden layers in the network
activation : 'sigmoid' , // supported activation types: ['sigmoid', 'relu', 'leaky-relu', 'tanh'],
leakyReluAlpha : 0.01 , // supported for activation type 'leaky-relu'
} ;
// create a simple feed-forward neural network with backpropagation
const net = new brain . NeuralNetwork ( config ) ;
net . train ( [
{ input : [ 0 , 0 ] , output : [ 0 ] } ,
{ input : [ 0 , 1 ] , output : [ 1 ] } ,
{ input : [ 1 , 0 ] , output : [ 1 ] } ,
{ input : [ 1 , 1 ] , output : [ 0 ] } ,
] ) ;
const output = net . run ( [ 1 , 0 ] ) ; // [0.987]หรือข้อมูลเพิ่มเติมเกี่ยวกับการกำหนดค่าที่นี่
// provide optional config object, defaults shown.
const config = {
inputSize : 20 ,
inputRange : 20 ,
hiddenLayers : [ 20 , 20 ] ,
outputSize : 20 ,
learningRate : 0.01 ,
decayRate : 0.999 ,
} ;
// create a simple recurrent neural network
const net = new brain . recurrent . RNN ( config ) ;
net . train ( [
{ input : [ 0 , 0 ] , output : [ 0 ] } ,
{ input : [ 0 , 1 ] , output : [ 1 ] } ,
{ input : [ 1 , 0 ] , output : [ 1 ] } ,
{ input : [ 1 , 1 ] , output : [ 0 ] } ,
] ) ;
let output = net . run ( [ 0 , 0 ] ) ; // [0]
output = net . run ( [ 0 , 1 ] ) ; // [1]
output = net . run ( [ 1 , 0 ] ) ; // [1]
output = net . run ( [ 1 , 1 ] ) ; // [0]อย่างไรก็ตามไม่มีเหตุผลที่จะใช้เครือข่ายประสาทเพื่อหา XOR (-: ดังนั้นนี่คือตัวอย่างที่เกี่ยวข้องและเป็นจริงมากขึ้น: การสาธิต: การฝึกอบรมเครือข่ายประสาทเพื่อรับรู้ถึงความคมชัดของสี
Brain.js ตัวอย่าง repo
คุณสามารถตรวจสอบ screencast ที่ยอดเยี่ยมนี้ซึ่งอธิบายวิธีการฝึกอบรมเครือข่ายประสาทอย่างง่ายโดยใช้ชุดข้อมูลในโลกแห่งความเป็นจริง: วิธีการสร้างเครือข่ายประสาทในเบราว์เซอร์โดยใช้ Brain.js
ใช้ train() เพื่อฝึกอบรมเครือข่ายด้วยข้อมูลการฝึกอบรมที่หลากหลาย เครือข่ายจะต้องได้รับการฝึกอบรมด้วยข้อมูลทั้งหมดเป็นกลุ่มในการโทรครั้งเดียวเพื่อ train() รูปแบบการฝึกอบรมเพิ่มเติมอาจใช้เวลาในการฝึกอบรมนานขึ้น แต่มักจะส่งผลให้เครือข่ายดีขึ้นในการจำแนกรูปแบบใหม่
การฝึกอบรมมีราคาแพงมากดังนั้นคุณควรลองฝึกอบรมเครือข่ายออฟไลน์ (หรือบนคนงาน) และใช้ตัวเลือก toFunction() หรือ toJSON() เพื่อเสียบเครือข่ายที่ผ่านการฝึกอบรมมาแล้วเข้ากับเว็บไซต์ของคุณ
NeuralNetwork แต่ละรูปแบบการฝึกอบรมควรมี input และ output ซึ่งทั้งสองอย่างนี้อาจเป็นอาร์เรย์ของตัวเลขจาก 0 ถึง 1 หรือแฮชตัวเลขจาก 0 ถึง 1 สำหรับการสาธิตความคมชัดสีมันมีลักษณะเช่นนี้:
const net = new brain . NeuralNetwork ( ) ;
net . train ( [
{ input : { r : 0.03 , g : 0.7 , b : 0.5 } , output : { black : 1 } } ,
{ input : { r : 0.16 , g : 0.09 , b : 0.2 } , output : { white : 1 } } ,
{ input : { r : 0.5 , g : 0.5 , b : 1.0 } , output : { white : 1 } } ,
] ) ;
const output = net . run ( { r : 1 , g : 0.4 , b : 0 } ) ; // { white: 0.99, black: 0.002 }นี่คืออีกรูปแบบหนึ่งของตัวอย่างข้างต้น ( โปรดทราบ ว่าวัตถุอินพุตไม่จำเป็นต้องคล้ายกัน)
net . train ( [
{ input : { r : 0.03 , g : 0.7 } , output : { black : 1 } } ,
{ input : { r : 0.16 , b : 0.2 } , output : { white : 1 } } ,
{ input : { r : 0.5 , g : 0.5 , b : 1.0 } , output : { white : 1 } } ,
] ) ;
const output = net . run ( { r : 1 , g : 0.4 , b : 0 } ) ; // { white: 0.81, black: 0.18 } RNNTimeStep , LSTMTimeStep และ GRUTimeStepแต่ละรูปแบบการฝึกอบรมสามารถ:
ตัวอย่างการใช้อาร์เรย์ของตัวเลข:
const net = new brain . recurrent . LSTMTimeStep ( ) ;
net . train ( [ [ 1 , 2 , 3 ] ] ) ;
const output = net . run ( [ 1 , 2 ] ) ; // 3ตัวอย่างการใช้อาร์เรย์ของอาร์เรย์ของตัวเลข:
const net = new brain . recurrent . LSTMTimeStep ( {
inputSize : 2 ,
hiddenLayers : [ 10 ] ,
outputSize : 2 ,
} ) ;
net . train ( [
[ 1 , 3 ] ,
[ 2 , 2 ] ,
[ 3 , 1 ] ,
] ) ;
const output = net . run ( [
[ 1 , 3 ] ,
[ 2 , 2 ] ,
] ) ; // [3, 1] RNN , LSTM และ GRUแต่ละรูปแบบการฝึกอบรมสามารถ:
input และ outputข้อควรระวัง: เมื่อใช้อาร์เรย์ของค่าคุณสามารถใช้ค่าใดก็ได้อย่างไรก็ตามค่าจะถูกแสดงในเครือข่ายประสาทด้วยอินพุตเดียว ดังนั้น ค่าที่แตกต่าง ก็ยิ่งมี เลเยอร์อินพุตของคุณมากขึ้น หากคุณมีค่าจุดลอยตัวนับร้อยหลายพันหรือหลายล้านรายการ นี่ไม่ใช่คลาสที่เหมาะสมสำหรับงาน นอกจากนี้เมื่อเบี่ยงเบนจากสตริงสิ่งนี้จะเข้าสู่เบต้า
ตัวอย่างการใช้สตริงโดยตรง: Hello World โดยใช้ brainjs
const net = new brain . recurrent . LSTM ( ) ;
net . train ( [ 'I am brainjs, Hello World!' ] ) ;
const output = net . run ( 'I am brainjs' ) ;
alert ( output ) ; const net = new brain . recurrent . LSTM ( ) ;
net . train ( [
'doe, a deer, a female deer' ,
'ray, a drop of golden sun' ,
'me, a name I call myself' ,
] ) ;
const output = net . run ( 'doe' ) ; // ', a deer, a female deer'ตัวอย่างการใช้สตริงที่มีอินพุตและเอาต์พุต:
const net = new brain . recurrent . LSTM ( ) ;
net . train ( [
{ input : 'I feel great about the world!' , output : 'happy' } ,
{ input : 'The world is a terrible place!' , output : 'sad' } ,
] ) ;
const output = net . run ( 'I feel great about the world!' ) ; // 'happy' AEแต่ละรูปแบบการฝึกอบรมสามารถ:
ฝึกอบรมอัตโนมัติเพื่อบีบอัดค่าของการคำนวณ XOR:
const net = new brain . AE (
{
hiddenLayers : [ 5 , 2 , 5 ]
}
) ;
net . train ( [
[ 0 , 0 , 0 ] ,
[ 0 , 1 , 1 ] ,
[ 1 , 0 , 1 ] ,
[ 1 , 1 , 0 ]
] ) ;การเข้ารหัส/ถอดรหัส:
const input = [ 0 , 1 , 1 ] ;
const encoded = net . encode ( input ) ;
const decoded = net . decode ( encoded ) ;ข้อมูล Denoise Noisy:
const noisyData = [ 0 , 1 , 0 ] ;
const data = net . denoise ( noisyData ) ;ทดสอบความผิดปกติในตัวอย่างข้อมูล:
const shouldBeFalse = net . includesAnomalies ( [ 0 , 1 , 1 ] ) ;
const shouldBeTrue = net . includesAnomalies ( [ 0 , 1 , 0 ] ) ; train() ใช้แฮชตัวเลือกเป็นอาร์กิวเมนต์ที่สอง:
net . train ( data , {
// Defaults values --> expected validation
iterations : 20000 , // the maximum times to iterate the training data --> number greater than 0
errorThresh : 0.005 , // the acceptable error percentage from training data --> number between 0 and 1
log : false , // true to use console.log, when a function is supplied it is used --> Either true or a function
logPeriod : 10 , // iterations between logging out --> number greater than 0
learningRate : 0.3 , // scales with delta to effect training rate --> number between 0 and 1
momentum : 0.1 , // scales with next layer's change value --> number between 0 and 1
callback : null , // a periodic call back that can be triggered while training --> null or function
callbackPeriod : 10 , // the number of iterations through the training data between callback calls --> number greater than 0
timeout : number , // the max number of milliseconds to train for --> number greater than 0. Default --> Infinity
} ) ; เครือข่ายจะหยุดการฝึกอบรมเมื่อใดก็ตามที่เป็นไปตามเกณฑ์หนึ่งในสองเกณฑ์: ข้อผิดพลาดในการฝึกอบรมได้ต่ำกว่าเกณฑ์ (ค่าเริ่มต้น 0.005 ) หรือจำนวนสูงสุดของการวนซ้ำ (เริ่มต้น 20000 )
โดยค่าเริ่มต้นการฝึกอบรมจะไม่แจ้งให้คุณทราบว่ามันเป็นอย่างไรจนถึงสิ้นสุด แต่ตั้ง log เป็น true เพื่อรับการอัปเดตเป็นระยะเกี่ยวกับข้อผิดพลาดในการฝึกอบรมปัจจุบันของเครือข่าย ข้อผิดพลาดในการฝึกอบรมควรลดลงทุกครั้ง การอัปเดตจะถูกพิมพ์ไปยังคอนโซล หากคุณตั้ง log เป็นฟังก์ชั่นฟังก์ชั่นนี้จะถูกเรียกด้วยการอัปเดตแทนการพิมพ์ไปยังคอนโซล อย่างไรก็ตามหากคุณต้องการใช้ค่าของการอัปเดตในเอาต์พุตของคุณเอง callback สามารถตั้งค่าเป็นฟังก์ชั่นเพื่อทำเช่นนั้นแทน
อัตราการเรียนรู้เป็นพารามิเตอร์ที่มีผลต่อการรถไฟเครือข่ายเร็วแค่ไหน เป็นตัวเลขตั้งแต่ 0 ถึง 1 หากอัตราการเรียนรู้ใกล้เคียงกับ 0 มันจะใช้เวลานานกว่าในการฝึกอบรม หากอัตราการเรียนรู้ใกล้เคียงกับ 1 มันจะฝึกเร็วขึ้น แต่ผลการฝึกอบรมอาจถูก จำกัด ให้ต่ำสุดในท้องถิ่นและดำเนินการกับข้อมูลใหม่ที่ไม่ดี ( overfitting ) อัตราการเรียนรู้เริ่มต้นคือ 0.3
โมเมนตัมนั้นคล้ายคลึงกับอัตราการเรียนรู้โดยคาดว่าจะมีมูลค่าตั้งแต่ 0 ถึง 1 เช่นกัน แต่มันจะคูณกับมูลค่าการเปลี่ยนแปลงของระดับถัดไป ค่าเริ่มต้นคือ 0.1
ตัวเลือกการฝึกอบรมใด ๆ เหล่านี้สามารถส่งผ่านไปยังคอนสตรัคเตอร์หรือส่งผ่านไปยังวิธี updateTrainingOptions(opts) และพวกเขาจะถูกบันทึกไว้ในเครือข่ายและใช้ในช่วงเวลาการฝึกอบรม หากคุณบันทึกเครือข่ายของคุณไปยัง JSON ตัวเลือกการฝึกอบรมเหล่านี้จะถูกบันทึกและกู้คืนเช่นกัน (ยกเว้นการโทรกลับและบันทึกการโทรกลับจะถูกลืมและบันทึกจะถูกกู้คืนโดยใช้ console.log)
คุณสมบัติบูลีนที่เรียกว่า invalidTrainOptsShouldThrow ถูกตั้งค่าเป็น true โดยค่าเริ่มต้น ในขณะที่ตัวเลือกนั้นเป็น true หากคุณป้อนตัวเลือกการฝึกอบรมที่อยู่นอกช่วงปกติข้อผิดพลาดจะถูกโยนด้วยข้อความเกี่ยวกับตัวเลือกที่ผิดปกติ เมื่อตัวเลือกถูกตั้งค่าเป็น false จะไม่มีการส่งข้อผิดพลาด แต่ข้อความจะยังคงถูกส่งไปยัง console.warn พร้อมข้อมูลที่เกี่ยวข้อง
trainAsync() ใช้ข้อโต้แย้งเช่นเดียวกับรถไฟ (ข้อมูลและตัวเลือก) แทนที่จะส่งคืนวัตถุผลลัพธ์จากการฝึกอบรมจะส่งคืนสัญญาว่าเมื่อได้รับการแก้ไขจะส่งคืนวัตถุผลลัพธ์การฝึกอบรม ไม่ทำงานกับ:
brain.recurrent.RNNbrain.recurrent.GRUbrain.recurrent.LSTMbrain.recurrent.RNNTimeStepbrain.recurrent.GRUTimeStepbrain.recurrent.LSTMTimeStep const net = new brain . NeuralNetwork ( ) ;
net
. trainAsync ( data , options )
. then ( ( res ) => {
// do something with my trained network
} )
. catch ( handleError ) ;ด้วยหลายเครือข่ายคุณสามารถฝึกฝนแบบขนานเช่นนี้:
const net = new brain . NeuralNetwork ( ) ;
const net2 = new brain . NeuralNetwork ( ) ;
const p1 = net . trainAsync ( data , options ) ;
const p2 = net2 . trainAsync ( data , options ) ;
Promise . all ( [ p1 , p2 ] )
. then ( ( values ) => {
const res = values [ 0 ] ;
const res2 = values [ 1 ] ;
console . log (
`net trained in ${ res . iterations } and net2 trained in ${ res2 . iterations } `
) ;
// do something super cool with my 2 trained networks
} )
. catch ( handleError ) ;การตรวจสอบข้ามสามารถให้วิธีการฝึกอบรมที่เปราะบางน้อยลงในชุดข้อมูลขนาดใหญ่ Brain.js API ให้การตรวจสอบข้ามในตัวอย่างนี้:
const crossValidate = new brain . CrossValidate ( ( ) => new brain . NeuralNetwork ( networkOptions ) ) ;
crossValidate . train ( data , trainingOptions , k ) ; //note k (or KFolds) is optional
const json = crossValidate . toJSON ( ) ; // all stats in json as well as neural networks
const net = crossValidate . toNeuralNetwork ( ) ; // get top performing net out of `crossValidate`
// optionally later
const json = crossValidate . toJSON ( ) ;
const net = crossValidate . fromJSON ( json ) ; ใช้ CrossValidate กับคลาสเหล่านี้:
brain.NeuralNetworkbrain.RNNTimeStepbrain.LSTMTimeStepbrain.GRUTimeStepตัวอย่างของการใช้การตรวจสอบข้ามสามารถพบได้ใน cross-validate.ts
train(trainingData) -> Trainingstatus ผลลัพธ์ของ train() เป็นแฮชของข้อมูลเกี่ยวกับวิธีการฝึกอบรม:
{
error : 0.0039139985510105032 , // training error
iterations : 406 // training iterations
}run(input) -> การทำนายสนับสนุนในชั้นเรียน:
brain.NeuralNetworkbrain.NeuralNetworkGPU -> ฟังก์ชั่นทั้งหมดของ brain.NeuralNetwork แต่วิ่งบน GPU (ผ่าน GPU.JS ใน WebGL2, WebGL1 หรือทางเลือกให้กับ CPU)brain.recurrent.RNNbrain.recurrent.LSTMbrain.recurrent.GRUbrain.recurrent.RNNTimeStepbrain.recurrent.LSTMTimeStepbrain.recurrent.GRUTimeStepตัวอย่าง:
// feed forward
const net = new brain . NeuralNetwork ( ) ;
net . fromJSON ( json ) ;
net . run ( input ) ;
// time step
const net = new brain . LSTMTimeStep ( ) ;
net . fromJSON ( json ) ;
net . run ( input ) ;
// recurrent
const net = new brain . LSTM ( ) ;
net . fromJSON ( json ) ;
net . run ( input ) ;forecast(input, count) -> การคาดการณ์พร้อมใช้งานกับชั้นเรียนต่อไปนี้ เอาต์พุตอาร์เรย์ของการทำนาย การคาดการณ์เป็นความต่อเนื่องของอินพุต
brain.recurrent.RNNTimeStepbrain.recurrent.LSTMTimeStepbrain.recurrent.GRUTimeStepตัวอย่าง:
const net = new brain . LSTMTimeStep ( ) ;
net . fromJSON ( json ) ;
net . forecast ( input , 3 ) ;toJSON() -> jsonทำให้เครือข่ายประสาทต่อเนื่องกับ JSON
fromJSON(json)Deserialize Neural Network จาก JSON
หากเครือข่ายไม่สามารถฝึกอบรมได้ข้อผิดพลาดจะสูงกว่าเกณฑ์ข้อผิดพลาด สิ่งนี้อาจเกิดขึ้นได้หากข้อมูลการฝึกอบรมมีเสียงดังเกินไป (เป็นไปได้มากที่สุด) เครือข่ายไม่มีเลเยอร์หรือโหนดที่ซ่อนอยู่เพียงพอที่จะจัดการกับความซับซ้อนของข้อมูลหรือไม่ได้รับการฝึกฝนสำหรับการทำซ้ำที่เพียงพอ
หากข้อผิดพลาดในการฝึกอบรมยังคงเป็นสิ่งที่ยิ่งใหญ่เช่น 0.4 หลังจากการทำซ้ำ 20000 มันเป็นสัญญาณที่ดีว่าเครือข่ายไม่สามารถทำความเข้าใจกับข้อมูลที่กำหนดได้
อินสแตนซ์ของคุณสมบัติ maxPredictionLength (ค่าเริ่มต้น 100) สามารถตั้งค่าเพื่อปรับเอาต์พุตของเน็ต
ตัวอย่าง:
const net = new brain . recurrent . LSTM ( ) ;
// later in code, after training on a few novels, write me a new one!
net . maxPredictionLength = 1000000000 ; // Be careful!
net . run ( 'Once upon a time' ) ; ทำให้เป็นอนุกรมหรือโหลดในสถานะของเครือข่ายที่ผ่านการฝึกอบรมกับ JSON:
const json = net . toJSON ( ) ;
net . fromJSON ( json ) ; นอกจากนี้คุณยังสามารถรับฟังก์ชั่นแบบสแตนด์อโลนที่กำหนดเองได้จากเครือข่ายที่ผ่านการฝึกอบรมซึ่งทำหน้าที่เหมือน run() :
const run = net . toFunction ( ) ;
const output = run ( { r : 1 , g : 0.4 , b : 0 } ) ;
console . log ( run . toString ( ) ) ; // copy and paste! no need to import brain.js NeuralNetwork() ใช้แฮชตัวเลือก:
const net = new brain . NeuralNetwork ( {
activation : 'sigmoid' , // activation function
hiddenLayers : [ 4 ] ,
learningRate : 0.6 , // global learning rate, useful when training using streams
} ) ;พารามิเตอร์นี้ช่วยให้คุณระบุฟังก์ชั่นการเปิดใช้งานเครือข่ายประสาทของคุณควรใช้ ขณะนี้มีฟังก์ชั่นการเปิดใช้งานที่รองรับสี่รายการ Sigmoid เป็นค่าเริ่มต้น:
นี่คือตาราง (ขอบคุณ Wikipedia!) สรุปฟังก์ชั่นการเปิดใช้งานมากมาย - ฟังก์ชั่นการเปิดใช้งาน
คุณสามารถใช้สิ่งนี้เพื่อระบุจำนวนเลเยอร์ที่ซ่อนอยู่ในเครือข่ายและขนาดของแต่ละเลเยอร์ ตัวอย่างเช่นหากคุณต้องการสองเลเยอร์ที่ซ่อนอยู่ - แรกที่มี 3 โหนดและสองที่มี 4 โหนดคุณจะให้:
hiddenLayers: [ 3 , 4 ] ; โดยค่าเริ่มต้น brain.js ใช้เลเยอร์ที่ซ่อนอยู่หนึ่งชั้นที่มีขนาดสัดส่วนกับขนาดของอาร์เรย์อินพุต
ใช้ https://www.npmjs.com/package/train-stream เพื่อสตรีมข้อมูลไปยัง neuralnetwork
likely const likely = require ( 'brain/likely' ) ;
const key = likely ( input , net ) ;ตัวอย่างที่น่าจะดู: การตรวจจับตัวอักษรอย่างง่าย
toSVG < script src = "../../src/utilities/svg.js" > </ script >แสดงโทโพโลยีเครือข่ายของเครือข่าย Feedforward
document . getElementById ( 'result' ) . innerHTML = brain . utilities . toSVG (
network ,
options
) ;ตัวอย่าง TOSVG ดู: การแสดงผลเครือข่าย
ส่วนต่อประสานผู้ใช้ที่ใช้: 
brain.NeuralNetworkbrain.NeuralNetworkGPU - เครือข่ายนิวรัลฟีดไปข้างหน้าพร้อม backpropagation เวอร์ชัน GPUbrain.AE - Autoencoder หรือ "AE" ด้วย backpropogation และการสนับสนุน GPUbrain.recurrent.RNNTimeStep - Time Step Neuural Network หรือ "RNN"brain.recurrent.LSTMTimeStep - เวลาขั้นตอนระยะยาวของหน่วยความจำระยะยาวเครือข่ายประสาทหรือ "LSTM"brain.recurrent.GRUTimeStep - Time Step Gated Gated Recurrent Unit หรือ "GRU"brain.recurrent.RNN - เครือข่ายประสาทกำเริบหรือ "RNN"brain.recurrent.LSTM - เครือข่ายประสาทหน่วยความจำระยะยาวระยะยาวหรือ "LSTM"brain.recurrent.GRU - หน่วยกำเริบที่มีรั้วรอบขอบชิดหรือ "gru"brain.FeedForward - เครือข่ายประสาทที่ปรับแต่งได้สูงพร้อม backpropagationbrain.Recurrent - เครือข่ายประสาทที่ปรับแต่งได้สูงพร้อม backpropagationอวนประสาทที่แตกต่างกันทำสิ่งต่าง ๆ ได้ดี ตัวอย่างเช่น:
หากคุณเป็นนักพัฒนาหรือถ้าคุณเพียงแค่สนใจว่า ML API ควรมีลักษณะอย่างไร - โปรดมีส่วนร่วมและเข้าร่วมชุมชน W3C และแบ่งปันความคิดเห็นของคุณหรือเพียงแค่สนับสนุนความคิดเห็นที่คุณชอบหรือเห็นด้วย
Brain.js เป็นห้องสมุดการเรียนรู้ของเครื่องโอเพนซอร์สที่นำมาใช้อย่างกว้างขวางในโลกจาวาสคริปต์ มีเหตุผลหลายประการ แต่สิ่งที่น่าสังเกตมากที่สุดคือ ความเรียบง่ายของการใช้งานในขณะที่ไม่เสียสละประสิทธิภาพ เราต้องการให้มันง่ายต่อการเรียนรู้ใช้งานง่ายและนักแสดงเมื่อพูดถึงมาตรฐาน W3C เราคิดว่าสมองปัจจุบัน JS API ค่อนข้างใกล้เคียงกับสิ่งที่เราคาดหวังว่าจะเป็นมาตรฐาน และเนื่องจากการสนับสนุนไม่จำเป็นต้องใช้ความพยายามอย่างมากและยังสามารถสร้างความแตกต่างอย่างมากในการเข้าร่วมกลุ่มชุมชน W3C และสนับสนุนเราด้วยสมอง js เช่น API
มีส่วนร่วมในกระบวนการเรียนรู้ของเครื่อง W3C อย่างต่อเนื่องที่นี่ คุณยังสามารถเข้าร่วมการอภิปรายแบบเปิดเกี่ยวกับมาตรฐานได้ที่นี่
หากคุณมีปัญหาทั้งข้อผิดพลาดหรือคุณสมบัติที่คุณคิดว่าจะเป็นประโยชน์ต่อโครงการของคุณแจ้งให้เราทราบและเราจะทำให้ดีที่สุด
สร้างปัญหาที่นี่และติดตามเทมเพลต
แหล่งที่มาสำหรับ brain.js.org มีให้บริการที่ Brain.js.org ที่เก็บ สร้างขึ้นโดยใช้ vue.js & bulma ที่ยอดเยี่ยม ยินดีต้อนรับการมีส่วนร่วมเสมอ
โครงการนี้มีอยู่ขอบคุณทุกคนที่มีส่วนร่วม [มีส่วนช่วย].
ขอบคุณผู้สนับสนุนของเราทุกคน! [เป็นผู้สนับสนุน]
สนับสนุนโครงการนี้โดยการเป็นสปอนเซอร์ โลโก้ของคุณจะปรากฏขึ้นที่นี่พร้อมลิงค์ไปยังเว็บไซต์ของคุณ [เป็นสปอนเซอร์]