本文整理汇总了C++中matrix::Matrix类的典型用法代码示例。如果您正苦于以下问题:C++ Matrix类的具体用法?C++ Matrix怎么用?C++ Matrix使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Matrix类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: setSensorTeaching
void PiMax::setSensorTeaching(const matrix::Matrix& teaching){
assert(teaching.getM() == number_sensors && teaching.getN() == 1);
// calculate the a_teaching,
// that belongs to the distal teaching value by the inverse model.
a_teaching = (A.pseudoInverse() * (teaching-b)).mapP(0.95, clip);
intern_isTeaching=true;
}
示例2: setMotorTeaching
void PiMax::setMotorTeaching(const matrix::Matrix& teaching){
assert(teaching.getM() == number_motors && teaching.getN() == 1);
// Note: through the clipping the otherwise effectless
// teaching with old motor value has now an effect,
// namely to drive out of the saturation region.
a_teaching= teaching.mapP(0.95,clip);
intern_isTeaching=true;
}
示例3: standardize
matrix::Matrix standardize(const matrix::Matrix& input)
{
auto means = apply(reduce(input, {1}, matrix::Add()), matrix::Divide(input.size()[1]));
auto inputMeanSubtracted = broadcast(input, means, {1}, matrix::Subtract());
auto stddevs = apply(reduce(apply(inputMeanSubtracted,
matrix::SquareAndScale(1.0 / input.size()[1])), {1}, matrix::Add()), matrix::Sqrt());
std::cout << stddevs.toString();
return broadcast(inputMeanSubtracted, stddevs, {1}, matrix::Divide());
}
示例4: learnHebb
void InvertNChannelControllerHebbH::learnHebb(const matrix::Matrix& context_sensors, const matrix::Matrix& h_update){
// preprocess context sensors
Matrix c_sensors = context_sensors;
for (int i=0;i<number_context_sensors;i++){
if (c_sensors.val(i,0)<0.15) {
c_sensors.val(i,0)=0; // IR's should only have positive values
}
}
// adapt hebbian weights
for (uint i=0; i<number_motors; i++){
for (uint j=0; j<(uint)number_context_sensors; j++){
if (i==j){ // TODO: remove (it is just for testing)
double dp= eps_hebb* h_update.val(i,0) * c_sensors.val(j,0) *(1 - pow(p.val(i,j),2));
// std::cout<<eps_hebb<<"*"<<h_update.val(i,0)<<" * "<<c_sensors.val(j,0)<<std::endl;
p.val(i,j)+=dp;
}
}
}
/*
// remove this !!! (just a test)
for (int i=0; i<number_motors; i++){
for (int j=0; j<number_context_sensors; j++){
if ((j==0) || (j==1)){
p.val(i,j)=-0.1;
} else {
p.val(i,j)=0.1;
}
}
}
*/
}
示例5: predictHebb
/**
* predict the update of h based on the actual context sensors
* @param context_sensors prediction is based on these sensors
*/
matrix::Matrix InvertNChannelControllerHebbH::predictHebb(const matrix::Matrix& context_sensors){
// preprocess context sensors
Matrix c_sensors = context_sensors;
for (int i=0;i<number_context_sensors;i++){
if (c_sensors.val(i,0)<0.15) {
c_sensors.val(i,0)=0; // IR's should only have positive values
}
}
Matrix pred_h_update(number_motors,1) ;
for (unsigned int k = 0; k < number_motors; k++) {
pred_h_update.val(k,0)=0;
}
for (uint i=0; i<number_motors; i++){
for (uint j=0; j<(uint)number_context_sensors; j++){
pred_h_update.val(i,0)+= p.val(i,j) * context_sensors.val(j,0);
}
}
return pred_h_update;
}
示例6: sliceLayerWeights
matrix::Matrix sliceLayerWeights(const matrix::Matrix& weights, const RecurrentOpsHandle& handle,
size_t index)
{
matrix::Dimension begin;
matrix::Dimension end;
prnn::rnn::getWeightsRange(begin, end, handle, weights.precision(), index);
return slice(weights, begin, end);
}
示例7: makePrediction
void CuriosityLoop::makePrediction(const matrix::Matrix& s, const matrix::Matrix& m){
matrix::Matrix sm = s.above(m);
matrix::Matrix f;
f.set(1,1);
f.val(0,0) = 1;
sm = sm.above(f);
matrix::Matrix pwMod = predictorWeights;
for(int i = 0; i < predictorWeights.getM(); i++){//to
for(int j = 0; j < predictorWeights.getN(); j++){//from
if(pInput.val(j,0) == 1 && pOutput.val(i,0) == 1)
pwMod.val(i,j) = predictorWeights.val(i,j); //Transposes the weight matrix.
else
pwMod.val(i,j) = 0;
// pwMod.val(i,j) = predictorWeights.val(i,j)*predictorMask.val(i,j);
}
}
matrix::Matrix a = pwMod*sm; //Make prediction here.
this->prediction = a; //The prediction is stored here.
//************************UNRESTRICTED PREDICTOR CODE ****************************
//ALSO MAKE PREDICTIONS FOR THE UNRESTRICTED PREDICTOR
matrix::Matrix uPwMod = uPredictorWeights;
for(int i = 0; i < uPredictorWeights.getM(); i++){//to
for(int j = 0; j < uPredictorWeights.getN(); j++){//from
if(uPInput.val(j,0) == 1 && uPOutput.val(i,0) == 1)
uPwMod.val(i,j) = uPredictorWeights.val(i,j);
else
uPwMod.val(i,j) = 0;
// pwMod.val(i,j) = predictorWeights.val(i,j)*predictorMask.val(i,j);
}
}
matrix::Matrix uA = uPwMod*sm; //Make prediction here.
this->uPrediction = uA; //The prediction is stored here.
//************************UNRESTRICTED PREDICTOR CODE ****************************
// cout << predictorWeights.getM() << " " << predictorWeights.getN() << "= pw \n";
// cout << sm.getM() << " " << sm.getN() << " = sm\n";
// cout << pwMod.getM() << " " << pwMod.getN() << " = a\n";
// for(int i = 0; i < prediction.getM(); i++){
// for(int j = 0; j < pwMod.getN(); j++){
// cout << prediction.val(i,0) << " ";
// }
// cout << " = precd\n";
// }
};
示例8: forwardPropRecurrent
void forwardPropRecurrent(matrix::Matrix& activations,
matrix::Matrix& reserve,
const matrix::Matrix& weights,
const RecurrentOpsHandle& handle)
{
auto scratch = prnn::rnn::getForwardPropScratch(handle, activations.precision());
prnn::rnn::forwardPropRecurrent(matrix::DynamicView(activations),
matrix::ConstDynamicView(copy(activations)),
matrix::ConstDynamicView(weights),
matrix::DynamicView(scratch),
matrix::DynamicView(reserve),
handle);
}
示例9: backPropGradientsRecurrent
void backPropGradientsRecurrent(matrix::Matrix& dWeights,
const matrix::Matrix& activations,
const matrix::Matrix& outputActivations,
const matrix::Matrix& reserve,
const RecurrentOpsHandle& handle)
{
auto scratch = prnn::rnn::getBackPropGradientsScratch(handle,
activations.precision());
prnn::rnn::backPropGradientsRecurrent(matrix::DynamicView(dWeights),
matrix::ConstDynamicView(activations),
matrix::ConstDynamicView(outputActivations),
matrix::DynamicView(scratch),
matrix::ConstDynamicView(reserve),
handle);
}
示例10: compare
void compare(const matrix::Matrix& predictions, const matrix::Matrix& reference)
{
size_t samples = predictions.size()[1];
auto differences = apply(predictions, reference, matrix::Subtract());
auto squareDifferences = apply(differences, matrix::Square());
auto normalizedSquareDifferences = apply(squareDifferences, matrix::Divide(samples));
double cost = std::sqrt(reduce(normalizedSquareDifferences, {}, matrix::Add())[0]);
std::cout << "Total RMS error was " << cost << "\n";
if(cost < 15.0)
{
std::cout << "Test Passed\n";
}
else
{
std::cout << "Test Failed\n";
}
}
示例11: setSensorTeaching
void SeMoX::setSensorTeaching(const matrix::Matrix& teaching){
assert(teaching.getM() == number_sensors && teaching.getN() == 1);
// calculate the y_teaching, that belongs to the distal teaching value by the inverse model.
y_teaching = (A.pseudoInverse(0.001) * (teaching-B)).mapP(0.95, clip);
intern_useTeaching=true;
}
示例12: seth
void PiMax::seth(const matrix::Matrix& _h){
assert(h.getM() == _h.getM() && h.getN() == _h.getN());
h=_h;
}
示例13: setC
void PiMax::setC(const matrix::Matrix& _C){
assert(C.getM() == _C.getM() && C.getN() == _C.getN());
C=_C;
}
示例14: setA
void PiMax::setA(const matrix::Matrix& _A){
assert(A.getM() == _A.getM() && A.getN() == _A.getN());
A=_A;
}
示例15: seth
void RandomDyn::seth(const matrix::Matrix& _h){
assert(h.getM() == _h.getM() && h.getN() == _h.getN());
h=_h;
}