Xmipp  v3.23.11-Nereus
Public Member Functions | List of all members

#include <batch_som.h>

Inheritance diagram for BatchSOM:
Inheritance graph
[legend]
Collaboration diagram for BatchSOM:
Collaboration graph
[legend]

Public Member Functions

 BatchSOM (Descent &_radius, unsigned long _nSteps)
 
 BatchSOM (std::istream &_is)
 
virtual ~BatchSOM ()
 
virtual void train (ClassificationMap &_som, const ClassicTrainingVectors &_ts) const
 
- Public Member Functions inherited from SOM
 SOM (Descent &_alpha, Descent &_radius, neighType _neighType, unsigned long _nSteps)
 
 SOM (std::istream &_is)
 
virtual ~SOM ()
 
 SOM (const SOM &)=delete
 
void alpha (Descent _alpha)
 
void radius (Descent _radius)
 
void nSteps (const unsigned long &_nSteps)
 
virtual void train (ClassificationMap &_som, ClassicTrainingVectors &_ts) const
 
virtual double test (const ClassificationMap &_som, const TS &_examples) const
 
virtual void clear ()
 
virtual void printSelf (std::ostream &_os) const
 
virtual void readSelf (std::istream &_is)
 
virtual void saveObject (std::ostream &_os) const
 
virtual void loadObject (std::istream &_is)
 
SOMoperator= (const SOM &op1)
 
- Public Member Functions inherited from ClassificationAlgorithm< ClassificationMap >
 ClassificationAlgorithm (const std::string &_ID="")
 
virtual ~ClassificationAlgorithm ()
 
virtual void train (DS &_ds, const TS &_examples) const
 
virtual void train (DS &_ds, TS &_examples) const
 
virtual double test (const DS &_ds, const TS &_examples) const=0
 
virtual const std::string & setID () const
 
virtual std::string & setID ()
 
void setListener (BaseListener *_listener)
 

Additional Inherited Members

- Public Types inherited from SOM
enum  neighType { GAUSSIAN = 0, BUBBLE = 1 }
 Type of neighborhood function. More...
 
- Public Types inherited from ClassificationAlgorithm< ClassificationMap >
typedef ClassificationMap DS
 
typedef DS::TS TS
 
- Protected Attributes inherited from SOM
Descent somAlpha
 
Descent somRadius
 alpha(t) More...
 
neighType somNeigh
 radius(t) More...
 
unsigned long somNSteps
 Neighborhood type for training (Bubble or Gaussian) More...
 
- Protected Attributes inherited from ClassificationAlgorithm< ClassificationMap >
std::string ID
 
BaseListenerlistener
 

Detailed Description

This class trains a Kohonen's Self Organizing Map using Batch SOM.

Definition at line 44 of file batch_som.h.

Constructor & Destructor Documentation

◆ BatchSOM() [1/2]

BatchSOM::BatchSOM ( Descent _radius,
unsigned long  _nSteps 
)
inline

Constructs the algorithm Parameter: _radius How is gonna decrease the radius of neighborhood Parameter: _nSteps Number of training steps

Definition at line 54 of file batch_som.h.

55  : SOM(_radius, _radius, BUBBLE, _nSteps)
56  {};
SOM(Descent &_alpha, Descent &_radius, neighType _neighType, unsigned long _nSteps)
Definition: som.h:150

◆ BatchSOM() [2/2]

BatchSOM::BatchSOM ( std::istream &  _is)

Construct a BatchSOM from the code vectors in a stream Parameter: _is The stream

Definition at line 37 of file batch_som.cpp.

37  : SOM(_is)
38 {
39  readSelf(_is);
40 }
SOM(Descent &_alpha, Descent &_radius, neighType _neighType, unsigned long _nSteps)
Definition: som.h:150
virtual void readSelf(std::istream &_is)
Definition: som.cpp:209

◆ ~BatchSOM()

virtual BatchSOM::~BatchSOM ( )
inlinevirtual

Virtual destructor

Definition at line 68 of file batch_som.h.

69  {};

Member Function Documentation

◆ train()

void BatchSOM::train ( ClassificationMap _som,
const ClassicTrainingVectors _ts 
) const
virtual

Trains the SOM Parameter: _som The som to train Parameter: _ts The training set

Definition at line 47 of file batch_som.cpp.

48 {
49 
50 
51  unsigned long t = 0;
52 
53  int verbosity = listener->getVerbosity();
54  if (verbosity)
55  listener->OnReportOperation((std::string) "Batch Training Kohonen SOM....\n");
56  if (verbosity == 1 || verbosity == 3)
58 
59  SomIn aveVector(_som.theItems[0].size());
60  std::vector<unsigned> tmpVector;
61 
62  while (t < somNSteps)
63  {
64  _som.classify(&_ts);
65  // Check for each SOM unit
66  for (unsigned it = 0; it < _som.size(); it++)
67  {
68  for (unsigned a = 0; a < aveVector.size(); a++)
69  aveVector[a] = 0.;
70  long total = 0;
71  // Collects a list of the input vectors assigned to the neighborhood
72  std::vector<unsigned> neig = _som.neighborhood(_som.indexToPos(it), ceil(somRadius(t, somNSteps)));
73  for (std::vector<unsigned>::iterator itt = neig.begin();itt < neig.end();itt++)
74  {
75  tmpVector = _som.classifAt(*itt);
76  for (unsigned j = 0 ; j < tmpVector.size() ; j++)
77  {
78  SomIn v = _ts.theItems[tmpVector[j]];
79  for (unsigned a = 0; a < v.size(); a++)
80  aveVector[a] += v[a];
81  total++;
82  }
83 
84  }
85  if (total != 0)
86  {
87  for (unsigned a = 0; a < aveVector.size(); a++)
88  aveVector[a] /= (floatFeature) total;
89  _som.theItems[it] = aveVector;
90  }
91  }
92 
93  if (verbosity == 1 || verbosity == 3)
94  listener->OnProgress(t);
95  if (verbosity >= 2)
96  {
97  char s[100];
98  sprintf(s, "Iteration %d of %d.\n", (int)(t + 1), (int)somNSteps);
99  listener->OnReportOperation((std::string) s);
100  }
101  t++;
102 
103  } // while t < somSteps
104 
105  if (verbosity == 1 || verbosity == 3)
107 }
SomPos indexToPos(const unsigned &_i) const
Definition: map.cpp:306
virtual void classify(const ClassicTrainingVectors *_ts)
Definition: code_book.cpp:238
virtual void OnReportOperation(const std::string &_rsOp)=0
virtual void OnInitOperation(unsigned long _est_it)=0
virtual const unsigned & getVerbosity() const
Definition: xmipp_funcs.h:1065
unsigned long somNSteps
Neighborhood type for training (Bubble or Gaussian)
Definition: som.h:278
float floatFeature
Definition: data_types.h:72
std::vector< unsigned > neighborhood(const SomPos &_center, double _radius) const
Definition: map.cpp:167
FeatureVector SomIn
Definition: map.h:44
virtual const std::vector< unsigned > & classifAt(const unsigned &_index) const
Definition: code_book.cpp:286
std::vector< Item > theItems
Definition: training_set.h:84
virtual void OnProgress(unsigned long _it)=0
#define j
Descent somRadius
alpha(t)
Definition: som.h:276
doublereal * a

The documentation for this class was generated from the following files: