Skip to content

Commit 294e114

Browse files
committed
@cxx/ClassCns.hxx: comments improved.
@`posts/VirusAnalysis.md`: include into this.
1 parent c27ff94 commit 294e114

File tree

2 files changed

+27
-27
lines changed

2 files changed

+27
-27
lines changed

cxx/ClassCns.hxx

Lines changed: 14 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
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)

posts/VirusAnalysis.md

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1928,15 +1928,18 @@ public:
19281928
Cns(Cns&&) SUSUWU_NOEXCEPT SUSUWU_DEFAULT /* Move constructor */
19291929
Cns& operator=(Cns &&) SUSUWU_NOEXCEPT SUSUWU_DEFAULT /* Move assignment */
19301930
~Cns() SUSUWU_OVERRIDE SUSUWU_DEFAULT
1931-
SUSUWU_PURE_VIRTUAL_DEFAULTS(Susuwu::Cns) /* `getName()`, `isPureVirtual()`, `operator==`()`, ... */
1932-
const bool isInitialized() const SUSUWU_OVERRIDE { return initialized; }
1933-
virtual void setInitialized(const bool is) { initialized = is; }
1934-
virtual void setInputMode(CnsMode x) { inputMode = x; }
1935-
virtual void setOutputMode(CnsMode x) { outputMode = x; }
1936-
virtual void setInputNeurons(size_t x) { inputNeurons = x; }
1937-
virtual void setOutputNeurons(size_t x) { outputNeurons = x; }
1938-
virtual void setLayersOfNeurons(size_t x) { layersOfNeurons = x; }
1939-
virtual void setNeuronsPerLayer(size_t x) { neuronsPerLayer = x; }
1931+
SUSUWU_PURE_VIRTUAL_DEFAULTS(Susuwu::Cns) /* `getName()`, `isPureVirtual()`, `operator==()`, ... */
1932+
const bool isInitialized() const SUSUWU_OVERRIDE { return initialized; } /* if can do "inference" (ergo "forwardpropagation"; `process*`) */
1933+
virtual void setInitialized(const bool is) { initialized = is; } /* after "training" (ergo "backpropagation") finishes, set to `true` */
1934+
1935+
/* Topological values; sets the "shape" of `Cns.synapses` (or of whatever the derived class uses to store the connectome) */
1936+
virtual void setInputMode(CnsMode x) { inputMode = x; } /* sets type of input */
1937+
virtual void setOutputMode(CnsMode x) { outputMode = x; } /* sets type of output (notice: some implementations require `inputMode == outputMode`) */
1938+
virtual void setInputNeurons(size_t x) { inputNeurons = x; } /* sets connectome input count */
1939+
virtual void setOutputNeurons(size_t x) { outputNeurons = x; } /* sets connectome output count (notice: some implementations require `inputNeurons == outputNeurons`) */
1940+
virtual void setLayersOfNeurons(size_t x) { layersOfNeurons = x; } /* sets connectome "hidden layer" count */
1941+
virtual void setNeuronsPerLayer(size_t x) { neuronsPerLayer = x; } /* sets connectome coefficients-per-"hidden layer" (notice: some implementations require `inputNeurons == neuronsPerLayer`) */
1942+
19401943
/* @throw bad_alloc
19411944
* @pre @code !isPureVirtual() @endcode
19421945
* @post @code isInitialized() @endcode */
@@ -1957,6 +1960,7 @@ public:
19571960
virtual void setupSynapses(const std::vector<std::tuple<INPUT_TYPEDEF, std::vector<float>>> &inputsToOutputs) {inputMode = (INPUT_MODE); outputMode = cnsModeVectorFloat;}\
19581961
virtual void setupSynapses(const std::vector<std::tuple<INPUT_TYPEDEF, std::vector<double>>> &inputsToOutputs) {inputMode = (INPUT_MODE); outputMode = cnsModeVectorDouble;}\
19591962
virtual void setupSynapses(const std::vector<std::tuple<INPUT_TYPEDEF, std::string>> &inputsToOutputs) {inputMode = (INPUT_MODE); outputMode = cnsModeString;}\
1963+
/* @pre @code isInitialized() @endcode */\
19601964
virtual const bool processToBool(const INPUT_TYPEDEF &input) const {assert((INPUT_MODE) == inputMode && cnsModeBool == outputMode); return 0;}\
19611965
virtual const char processToChar(const INPUT_TYPEDEF &input) const {assert((INPUT_MODE) == inputMode && cnsModeChar == outputMode); return 0;}\
19621966
virtual const int processToInt(const INPUT_TYPEDEF &input) const {assert((INPUT_MODE) == inputMode && cnsModeInt == outputMode); return 0;}\

0 commit comments

Comments
 (0)