Cranium
1.0.0
matrix.h
เพื่อเปิดใช้งานฟังก์ชัน BLAS sgemm
เพื่อการคูณเมทริกซ์ที่รวดเร็ว เนื่องจาก Cranium เป็นแบบส่วนหัวเท่านั้น เพียงคัดลอกไดเร็กทอรี src
ลงในโปรเจ็กต์ของคุณ และ #include "src/cranium.h"
เพื่อเริ่มใช้งาน
การพึ่งพาคอมไพเลอร์ที่จำเป็นเพียงอย่างเดียวนั้นมาจากส่วนหัว
ดังนั้นให้คอมไพล์ด้วย -lm
หากคุณใช้ CBLAS คุณจะต้องคอมไพล์ด้วย -lcblas
และรวมผ่าน -I
เส้นทางไปยังทุกที่ที่มีการใช้งาน BLAS ของเครื่องของคุณ รายการทั่วไป ได้แก่ OpenBLAS และ ATLAS
ได้รับการทดสอบแล้วว่าทำงานได้ดีอย่างสมบูรณ์แบบกับการเพิ่มประสิทธิภาพ gcc ทุกระดับ ดังนั้นอย่าลังเลที่จะใช้มัน
#include "cranium.h"
/*
This basic example program is the skeleton of a classification problem.
The training data should be in matrix form, where each row is a data point, and
each column is a feature.
The training classes should be in matrix form, where the ith row corresponds to
the ith training example, and each column is a 1 if it is of that class, and
0 otherwise. Each example may only be of 1 class.
*/
// create training data and target values (data collection not shown)
int rows , features , classes ;
float * * training ;
float * * classes ;
// create datasets to hold the data
DataSet * trainingData = createDataSet ( rows , features , training );
DataSet * trainingClasses = createDataSet ( rows , classes , classes );
// create network with 2 input neurons, 1 hidden layer with sigmoid
// activation function and 5 neurons, and 2 output neurons with softmax
// activation function
srand ( time ( NULL ));
size_t hiddenSize [] = { 5 };
Activation hiddenActivation [] = { sigmoid };
Network * net = createNetwork ( 2 , 1 , hiddenSize , hiddenActivation , 2 , softmax );
// train network with cross-entropy loss using Mini-Batch SGD
ParameterSet params ;
params . network = net ;
params . data = trainingData ;
params . classes = trainingClasses ;
params . lossFunction = CROSS_ENTROPY_LOSS ;
params . batchSize = 20 ;
params . learningRate = .01 ;
params . searchTime = 5000 ;
params . regularizationStrength = .001 ;
params . momentumFactor = .9 ;
params . maxIters = 10000 ;
params . shuffle = 1 ;
params . verbose = 1 ;
optimize ( params );
// test accuracy of network after training
printf ( "Accuracy is %fn" , accuracy ( net , trainingData , trainingClasses ));
// get network's predictions on input data after training
forwardPass ( net , trainingData );
int * predictions = predict ( net );
free ( predictions );
// save network to a file
saveNetwork ( net , "network" );
// free network and data
destroyNetwork ( net );
destroyDataSet ( trainingData );
destroyDataSet ( trainingClasses );
// load previous network from file
Network * previousNet = readNetwork ( "network" );
destroyNetwork ( previousNet );
หากต้องการรันการทดสอบ ให้ดูในโฟลเดอร์ tests
Makefile
มีคำสั่งให้เรียกใช้การทดสอบหน่วยแต่ละชุดหรือทั้งหมดพร้อมกัน
อย่าลังเลที่จะส่งคำขอดึงข้อมูลหากคุณต้องการเพิ่มคุณสมบัติใด ๆ หรือหากคุณพบข้อบกพร่อง
ตรวจสอบแท็บปัญหาเพื่อดูสิ่งที่ควรทำ