refactoring recurent
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
#pragma once
|
||||
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
namespace NeuralNetwork
|
||||
{
|
||||
@@ -66,6 +67,65 @@ namespace NeuralNetwork
|
||||
* @brief Function returns bias for neuron
|
||||
*/
|
||||
virtual float getBias() const=0;
|
||||
|
||||
virtual float operator()(const std::vector<float>& inputs) =0;
|
||||
|
||||
/**
|
||||
* @brief Function returns clone of object
|
||||
*/
|
||||
virtual Neuron* clone() const = 0;
|
||||
protected:
|
||||
};
|
||||
|
||||
class BiasNeuron: public Neuron {
|
||||
public:
|
||||
virtual float getBias() const override { return 0; };
|
||||
|
||||
virtual float getWeight(const Neuron&) const override { return 0; }
|
||||
|
||||
virtual void setBias(const float&) override{ }
|
||||
|
||||
virtual float output() const override { return 1.0; };
|
||||
|
||||
virtual void setWeight(const Neuron&, const float&) override { }
|
||||
|
||||
virtual std::string stringify(const std::string& prefix = "") const override { return prefix+"{ \"class\" : \"NeuralNetwork::BiasNeuron\" }"; }
|
||||
|
||||
virtual float value() const override { return 1.0; }
|
||||
|
||||
virtual long unsigned int id() const override { return 0; }
|
||||
|
||||
virtual float operator()(const std::vector< float >&) override { return 1.0; }
|
||||
|
||||
virtual Neuron* clone() const { return new BiasNeuron(); }
|
||||
};
|
||||
|
||||
class InputNeuron: public Neuron {
|
||||
public:
|
||||
InputNeuron(long unsigned int _id): id_(_id) {
|
||||
|
||||
}
|
||||
|
||||
virtual float getBias() const override { return 0; };
|
||||
|
||||
virtual float getWeight(const Neuron&) const override { return 0; }
|
||||
|
||||
virtual void setBias(const float&) override{ }
|
||||
|
||||
virtual float output() const override { return 1.0; };
|
||||
|
||||
virtual void setWeight(const Neuron&, const float&) override { }
|
||||
|
||||
virtual std::string stringify(const std::string& prefix = "") const override { return prefix+"{ \"class\" : \"NeuralNetwork::InputNeuron\", \"id\": "+std::to_string(id_)+" }"; }
|
||||
|
||||
virtual float value() const override { return 1.0; }
|
||||
|
||||
virtual long unsigned int id() const override { return id_; }
|
||||
|
||||
virtual float operator()(const std::vector< float >&) override { return 1.0; }
|
||||
|
||||
virtual Neuron* clone() const { return new InputNeuron(id_); }
|
||||
protected:
|
||||
long unsigned int id_;
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user