#pragma once #include #include template class NeuronsNetworkBase { double rate_train_ = 0.01; std::vector masses; protected: virtual double activation(double x) = 0; double& operator[](size_t index) { return masses[index]; } public: NeuronsNetworkBase(size_t count_neurons, double rate_train): rate_train_(rate_train) { masses.resize(count_neurons); } virtual ~NeuronsNetworkBase() = default; virtual void train(double error, const T& data) = 0; virtual double call(const T& data) = 0; double get_rate_train() const { return rate_train_; } };