22#pragma once
33#ifndef INCLUDES_cxx_ClassCns_hxx
44#define INCLUDES_cxx_ClassCns_hxx
5- #include " ClassObject.hxx" /* Object SUSUWU_VIRTUAL_DEFAULTS () */
5+ #include " ClassObject.hxx" /* Object SUSUWU_PURE_VIRTUAL_DEFAULTS () */
66#include " Macros.hxx" /* SUSUWU_CXX17 SUSUWU_IF_CPLUSPLUS SUSUWU_DEFAULT SUSUWU_NOEXCEPT SUSUWU_OVERRIDE */
77#include SUSUWU_IF_CPLUSPLUS(< cassert> , < assert.h> ) /* assert */
88#include SUSUWU_IF_CPLUSPLUS(< cstddef> , < stddef.h> ) /* size_t */
@@ -29,15 +29,18 @@ public:
2929 Cns (Cns&&) SUSUWU_NOEXCEPT SUSUWU_DEFAULT /* Move constructor */
3030 Cns& operator =(Cns &&) SUSUWU_NOEXCEPT SUSUWU_DEFAULT /* Move assignment */
3131 ~Cns () SUSUWU_OVERRIDE SUSUWU_DEFAULT
32- SUSUWU_PURE_VIRTUAL_DEFAULTS (Susuwu::Cns) /* `getName()`, `isPureVirtual()`, `operator==`()`, ... */
33- const bool isInitialized () const SUSUWU_OVERRIDE { return initialized; }
34- virtual void setInitialized (const bool is) { initialized = is; }
35- virtual void setInputMode (CnsMode x) { inputMode = x; }
36- virtual void setOutputMode (CnsMode x) { outputMode = x; }
37- virtual void setInputNeurons (size_t x) { inputNeurons = x; }
38- virtual void setOutputNeurons (size_t x) { outputNeurons = x; }
39- virtual void setLayersOfNeurons (size_t x) { layersOfNeurons = x; }
40- virtual void setNeuronsPerLayer (size_t x) { neuronsPerLayer = x; }
32+ SUSUWU_PURE_VIRTUAL_DEFAULTS (Susuwu::Cns) /* `getName()`, `isPureVirtual()`, `operator==()`, ... */
33+ const bool isInitialized () const SUSUWU_OVERRIDE { return initialized; } /* if can do "inference" (ergo "forwardpropagation"; `process*`) */
34+ virtual void setInitialized (const bool is) { initialized = is; } /* after "training" (ergo "backpropagation") finishes, set to `true` */
35+
36+ /* Topological values; sets the "shape" of `Cns.synapses` (or of whatever the derived class uses to store the connectome) */
37+ virtual void setInputMode (CnsMode x) { inputMode = x; } /* sets type of input */
38+ virtual void setOutputMode (CnsMode x) { outputMode = x; } /* sets type of output (notice: some implementations require `inputMode == outputMode`) */
39+ virtual void setInputNeurons (size_t x) { inputNeurons = x; } /* sets connectome input count */
40+ virtual void setOutputNeurons (size_t x) { outputNeurons = x; } /* sets connectome output count (notice: some implementations require `inputNeurons == outputNeurons`) */
41+ virtual void setLayersOfNeurons (size_t x) { layersOfNeurons = x; } /* sets connectome "hidden layer" count */
42+ virtual void setNeuronsPerLayer (size_t x) { neuronsPerLayer = x; } /* sets connectome coefficients-per-"hidden layer" (notice: some implementations require `inputNeurons == neuronsPerLayer`) */
43+
4144 /* @throw bad_alloc
4245 * @pre @code !isPureVirtual() @endcode
4346 * @post @code isInitialized() @endcode */
@@ -58,6 +61,7 @@ public:
5861 virtual void setupSynapses (const std::vector<std::tuple<INPUT_TYPEDEF, std::vector<float >>> &inputsToOutputs) {inputMode = (INPUT_MODE); outputMode = cnsModeVectorFloat;}\
5962 virtual void setupSynapses (const std::vector<std::tuple<INPUT_TYPEDEF, std::vector<double >>> &inputsToOutputs) {inputMode = (INPUT_MODE); outputMode = cnsModeVectorDouble;}\
6063 virtual void setupSynapses (const std::vector<std::tuple<INPUT_TYPEDEF, std::string>> &inputsToOutputs) {inputMode = (INPUT_MODE); outputMode = cnsModeString;}\
64+ /* @pre @code isInitialized() @endcode */ \
6165 virtual const bool processToBool (const INPUT_TYPEDEF &input) const {assert ((INPUT_MODE) == inputMode && cnsModeBool == outputMode); return 0 ;}\
6266 virtual const char processToChar (const INPUT_TYPEDEF &input) const {assert ((INPUT_MODE) == inputMode && cnsModeChar == outputMode); return 0 ;}\
6367 virtual const int processToInt (const INPUT_TYPEDEF &input) const {assert ((INPUT_MODE) == inputMode && cnsModeInt == outputMode); return 0 ;}\
@@ -113,14 +117,6 @@ typedef class ApxrCns : public Cns {
113117} ApxrCns;
114118#endif /* USE_APXR_CNS */
115119
116- /* Possible uses of artificial CNS:
117- * Virus analysis; https://swudususuwu.substack.com/p/howto-produce-better-virus-scanners
118- * Autonomous robots (includes responses to replies from lots of forums); https://swudususuwu.substack.com/p/program-general-purpose-robots-autonomous
119- * Due to understanding of human's consciousness, could undo problems of overpopulation and food shortages, if lots of us become uploads of consciousness (as opposed to below article of how to move whole CNS to robots);
120- * https://swudususuwu.substack.com/p/want-this-physical-form-gone-so-wont
121- * https://swudususuwu.substack.com/p/destructive-unreversible-upload-of
122- */
123-
124120/* Related to this:
125121 * [Howto use `class Cns` for virus analysis and digital assistants](https://github.com/SwuduSusuwu/SusuLib/blob/preview/posts/VirusAnalysis.md) [2](https://swudususuwu.substack.com/p/howto-improve-virus-analysis) (demos; `#include "VirusAnalysis.hxx"` and `#include "AssistantCns.hxx"`)
126122 * [How to: throughput improved](https://github.com/SwuduSusuwu/SusuLib/blob/experimental/posts/SimdGpgpuTpu.md) [2](https://swudususuwu.substack.com/p/howto-run-devices-phones-laptops)
0 commit comments