Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feat/em composition #2735

Merged
merged 131 commits into from
Jul 19, 2023
Merged

Feat/em composition #2735

merged 131 commits into from
Jul 19, 2023

Conversation

jdcpni
Copy link
Collaborator

@jdcpni jdcpni commented Jul 18, 2023

• emcomposition.py

  • implements form of episodic / external memory at level of a Composition

• test_emcomposition.py

  • tests for EMComposition construction and execution

jdcpni added 30 commits July 2, 2023 12:22
  - all_entries_identical()
  first draft of module that implements episodic / external memory Composition
  - add error message for specifcation of default_control_allocation or default_gating_allocation
  - add error message for specifcation of default_control_allocation or default_gating_allocation
  - add error message for specifcation of default_control_allocation or default_gating_allocation
 - constructs but wiring still not right
 - first draft; needs to be run
 - add memory decay and storage
 - storage and retrieval working
 - exclude value_input_nodes as NodeRole.OUTPUT
 - TODO notes
 - suppress warning for no efferent projectsions
  - add storage_prob and related parameters
  - docs in progress
• emcomposition.py
  - doc mods
• emcomposition.py
  - normalize dot products for match_nodes
  (still needs compiled version)
• emcomposition.py
  - doc mods
• emcomposition.py
  - implement various Parameters
  - add keys to retrieval nodes
• emcomposition.py
  - field_names implemented
• emcomposition.py
  - adaptive softmax gain implemented
• emcomposition.py
  - match_nodes -> softmax_nodes
• emcomposition.py
  - split match_nodes and softmax_nodes
• emcomposition.py
  - implement adpative softmax control
@github-actions
Copy link

This PR causes the following changes to the html docs (ubuntu-latest-3.7-x64):

diff -r docs-base/BasicsAndPrimer.html docs-head/BasicsAndPrimer.html
269c269
< <a class="reference internal" href="index_logo_with_text.html#tutorial"><span class="std std-ref">tutorial</span></a> provides additional introductory material for those who are newer to computational modeling,
---
> <a class="reference internal" href="index.html#tutorial"><span class="std std-ref">tutorial</span></a> provides additional introductory material for those who are newer to computational modeling,
1128c1128
< <a class="reference internal" href="index_logo_with_text.html#tutorial"><span class="std std-ref">Tutorial</span></a> provides a more thorough, interactive introduction to its use, and the <a class="reference internal" href="UserGuide.html"><span class="doc">User's Guide</span></a> provides
---
> <a class="reference internal" href="index.html#tutorial"><span class="std std-ref">Tutorial</span></a> provides a more thorough, interactive introduction to its use, and the <a class="reference internal" href="UserGuide.html"><span class="doc">User's Guide</span></a> provides
diff -r docs-base/BeukersNBackModel.html docs-head/BeukersNBackModel.html
211c211
< <p>(Instructions for running the actual notebook can be found <a class="reference internal" href="index_logo_with_text.html#tutorial"><span class="std std-ref">here</span></a>, replacing <code class="docutils literal notranslate"><span class="pre">nback_nb</span></code> for <code class="docutils literal notranslate"><span class="pre">tutorial</span></code>)</p>
---
> <p>(Instructions for running the actual notebook can be found <a class="reference internal" href="index.html#tutorial"><span class="std std-ref">here</span></a>, replacing <code class="docutils literal notranslate"><span class="pre">nback_nb</span></code> for <code class="docutils literal notranslate"><span class="pre">tutorial</span></code>)</p>
diff -r docs-base/Compositions.html docs-head/Compositions.html
211a212
> <li class="toctree-l1"><a class="reference internal" href="EMComposition.html">EMComposition</a></li>
Only in docs-head: EMComposition.html
diff -r docs-base/Library.html docs-head/Library.html
274a275
> <li class="toctree-l2"><a class="reference internal" href="EMComposition.html">EMComposition</a></li>
diff -r docs-base/MemoryFunctions.html docs-head/MemoryFunctions.html
786,792c786,795
< <p id="contentaddressablememory-retrieval"><strong>Retrieval</strong>. Entries are retrieved from <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a> based on their distance from
< <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span></code></a>, used as the cue for retrieval. The distance is computed using the
< <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_function" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_function"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_function</span></code></a>, which compares <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span></code></a> with each entry in <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.storage_prob" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.storage_prob"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a> as full
< vectors (i.e., with all fields of each concatenated into a single array), or by computing the distance of each
< field in <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span></code></a> with the corresponding ones of each entry in <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a>, and then averaging those distances, possibly weighted by coefficients specified
< in <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_field_weights</span></code></a>. The distances computed between
< <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span> <span class="pre">`</span></code></a> and each entry in <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a> are
---
> <p id="contentaddressablememory-retrieval"><strong>Retrieval</strong>. Entries are retrieved from <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a> based on their distance
> from <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span></code></a>, used as the cue for retrieval. The distance is computed
> using the <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_function" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_function"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_function</span></code></a>, which compares <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span></code></a> with each entry in <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a>.
> If memories have more than one field, then the distances are computed in one of two ways: i) as full
> vectors (i.e., with all fields of each concatenated into a single array) if <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_field_weights</span></code></a> is a single scalar value or a list of identical values);
> or field-by-field, if <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_field_weights</span></code></a> is a list of
> non-identical values, by computing the distance of each field in <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span></code></a>
> with the corresponding ones of each entry in <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a>, and then averaging
> those distances weighted by the coefficients specified in <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_field_weights</span></code></a>. The distances computed between <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span>
> <span class="pre">`</span></code></a> and each entry in <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a> are then
838,839c841,842
< <li><p>if <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_field_weights</span></code></a> is an array of scalars with
< different values, then <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span></code></a> is compared with each entry in <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a> by using <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_function" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_function"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_function</span></code></a>
---
> <li><p>if <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_field_weights</span></code></a> is an array of non-identical
> scalars , then <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span></code></a> is compared with each entry in <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a> by using <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_function" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_function"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_function</span></code></a>
diff -r docs-base/ParameterEstimationComposition.html docs-head/ParameterEstimationComposition.html
36c36
<     <link rel="next" title="Subsystems" href="Subystems.html" />
---
>     <link rel="next" title="EMComposition" href="EMComposition.html" />
687c687
<         <a href="Subystems.html" class="btn btn-neutral float-right" title="Subsystems" accesskey="n" rel="next">Next <img src="_static/images/chevron-right-orange.svg" class="next-page"></a>
---
>         <a href="EMComposition.html" class="btn btn-neutral float-right" title="EMComposition" accesskey="n" rel="next">Next <img src="_static/images/chevron-right-orange.svg" class="next-page"></a>
diff -r docs-base/RefactoredLearningGuide.html docs-head/RefactoredLearningGuide.html
282c282
< <p>Notice that we no longer have to extract the target node from the <code class="xref any docutils literal notranslate"><span class="pre">add_backpropagation_learning_pathway</span> <span class="pre">method</span></code>, and can instead pass the targets as output nodes mapped to values, in a new parameter called <code class="xref any docutils literal notranslate"><span class="pre">targets</span></code> in the <a class="reference internal" href="AutodiffComposition.html#psyneulink.library.compositions.autodiffcomposition.AutodiffComposition.learn" title="psyneulink.library.compositions.autodiffcomposition.AutodiffComposition.learn"><code class="xref any py py-meth docutils literal notranslate"><span class="pre">learn</span></code></a> method.</p>
---
> <p>Notice that we no longer have to extract the target node from the <code class="xref any docutils literal notranslate"><span class="pre">add_backpropagation_learning_pathway</span> <span class="pre">method</span></code>, and can instead pass the targets as output nodes mapped to values, in a new parameter called <code class="xref any docutils literal notranslate"><span class="pre">targets</span></code> in the <a class="reference internal" href="EMComposition.html#psyneulink.library.compositions.emcomposition.EMComposition.learn" title="psyneulink.library.compositions.emcomposition.EMComposition.learn"><code class="xref any py py-meth docutils literal notranslate"><span class="pre">learn</span></code></a> method.</p>
287c287
< its constructor to be runtime parameters of its <a class="reference internal" href="AutodiffComposition.html#psyneulink.library.compositions.autodiffcomposition.AutodiffComposition.learn" title="psyneulink.library.compositions.autodiffcomposition.AutodiffComposition.learn"><code class="xref any 
...

See CI logs for the full diff.

@github-actions
Copy link

This PR causes the following changes to the html docs (ubuntu-latest-3.7-x64):

diff -r docs-base/BasicsAndPrimer.html docs-head/BasicsAndPrimer.html
269c269
< <a class="reference internal" href="index_logo_with_text.html#tutorial"><span class="std std-ref">tutorial</span></a> provides additional introductory material for those who are newer to computational modeling,
---
> <a class="reference internal" href="index.html#tutorial"><span class="std std-ref">tutorial</span></a> provides additional introductory material for those who are newer to computational modeling,
1128c1128
< <a class="reference internal" href="index_logo_with_text.html#tutorial"><span class="std std-ref">Tutorial</span></a> provides a more thorough, interactive introduction to its use, and the <a class="reference internal" href="UserGuide.html"><span class="doc">User's Guide</span></a> provides
---
> <a class="reference internal" href="index.html#tutorial"><span class="std std-ref">Tutorial</span></a> provides a more thorough, interactive introduction to its use, and the <a class="reference internal" href="UserGuide.html"><span class="doc">User's Guide</span></a> provides
diff -r docs-base/BeukersNBackModel.html docs-head/BeukersNBackModel.html
211c211
< <p>(Instructions for running the actual notebook can be found <a class="reference internal" href="index_logo_with_text.html#tutorial"><span class="std std-ref">here</span></a>, replacing <code class="docutils literal notranslate"><span class="pre">nback_nb</span></code> for <code class="docutils literal notranslate"><span class="pre">tutorial</span></code>)</p>
---
> <p>(Instructions for running the actual notebook can be found <a class="reference internal" href="index.html#tutorial"><span class="std std-ref">here</span></a>, replacing <code class="docutils literal notranslate"><span class="pre">nback_nb</span></code> for <code class="docutils literal notranslate"><span class="pre">tutorial</span></code>)</p>
diff -r docs-base/Compositions.html docs-head/Compositions.html
211a212
> <li class="toctree-l1"><a class="reference internal" href="EMComposition.html">EMComposition</a></li>
Only in docs-head: EMComposition.html
diff -r docs-base/Library.html docs-head/Library.html
274a275
> <li class="toctree-l2"><a class="reference internal" href="EMComposition.html">EMComposition</a></li>
diff -r docs-base/MemoryFunctions.html docs-head/MemoryFunctions.html
786,792c786,795
< <p id="contentaddressablememory-retrieval"><strong>Retrieval</strong>. Entries are retrieved from <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a> based on their distance from
< <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span></code></a>, used as the cue for retrieval. The distance is computed using the
< <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_function" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_function"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_function</span></code></a>, which compares <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span></code></a> with each entry in <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.storage_prob" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.storage_prob"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a> as full
< vectors (i.e., with all fields of each concatenated into a single array), or by computing the distance of each
< field in <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span></code></a> with the corresponding ones of each entry in <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a>, and then averaging those distances, possibly weighted by coefficients specified
< in <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_field_weights</span></code></a>. The distances computed between
< <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span> <span class="pre">`</span></code></a> and each entry in <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a> are
---
> <p id="contentaddressablememory-retrieval"><strong>Retrieval</strong>. Entries are retrieved from <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a> based on their distance
> from <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span></code></a>, used as the cue for retrieval. The distance is computed
> using the <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_function" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_function"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_function</span></code></a>, which compares <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span></code></a> with each entry in <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a>.
> If memories have more than one field, then the distances are computed in one of two ways: i) as full
> vectors (i.e., with all fields of each concatenated into a single array) if <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_field_weights</span></code></a> is a single scalar value or a list of identical values);
> or field-by-field, if <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_field_weights</span></code></a> is a list of
> non-identical values, by computing the distance of each field in <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span></code></a>
> with the corresponding ones of each entry in <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a>, and then averaging
> those distances weighted by the coefficients specified in <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_field_weights</span></code></a>. The distances computed between <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span>
> <span class="pre">`</span></code></a> and each entry in <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a> are then
838,839c841,842
< <li><p>if <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_field_weights</span></code></a> is an array of scalars with
< different values, then <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span></code></a> is compared with each entry in <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a> by using <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_function" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_function"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_function</span></code></a>
---
> <li><p>if <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_field_weights</span></code></a> is an array of non-identical
> scalars , then <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span></code></a> is compared with each entry in <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a> by using <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_function" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_function"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_function</span></code></a>
diff -r docs-base/ParameterEstimationComposition.html docs-head/ParameterEstimationComposition.html
36c36
<     <link rel="next" title="Subsystems" href="Subystems.html" />
---
>     <link rel="next" title="EMComposition" href="EMComposition.html" />
687c687
<         <a href="Subystems.html" class="btn btn-neutral float-right" title="Subsystems" accesskey="n" rel="next">Next <img src="_static/images/chevron-right-orange.svg" class="next-page"></a>
---
>         <a href="EMComposition.html" class="btn btn-neutral float-right" title="EMComposition" accesskey="n" rel="next">Next <img src="_static/images/chevron-right-orange.svg" class="next-page"></a>
diff -r docs-base/RefactoredLearningGuide.html docs-head/RefactoredLearningGuide.html
282c282
< <p>Notice that we no longer have to extract the target node from the <code class="xref any docutils literal notranslate"><span class="pre">add_backpropagation_learning_pathway</span> <span class="pre">method</span></code>, and can instead pass the targets as output nodes mapped to values, in a new parameter called <code class="xref any docutils literal notranslate"><span class="pre">targets</span></code> in the <a class="reference internal" href="AutodiffComposition.html#psyneulink.library.compositions.autodiffcomposition.AutodiffComposition.learn" title="psyneulink.library.compositions.autodiffcomposition.AutodiffComposition.learn"><code class="xref any py py-meth docutils literal notranslate"><span class="pre">learn</span></code></a> method.</p>
---
> <p>Notice that we no longer have to extract the target node from the <code class="xref any docutils literal notranslate"><span class="pre">add_backpropagation_learning_pathway</span> <span class="pre">method</span></code>, and can instead pass the targets as output nodes mapped to values, in a new parameter called <code class="xref any docutils literal notranslate"><span class="pre">targets</span></code> in the <a class="reference internal" href="EMComposition.html#psyneulink.library.compositions.emcomposition.EMComposition.learn" title="psyneulink.library.compositions.emcomposition.EMComposition.learn"><code class="xref any py py-meth docutils literal notranslate"><span class="pre">learn</span></code></a> method.</p>
287c287
< its constructor to be runtime parameters of its <a class="reference internal" href="AutodiffComposition.html#psyneulink.library.compositions.autodiffcomposition.AutodiffComposition.learn" title="psyneulink.library.compositions.autodiffcomposition.AutodiffComposition.learn"><code class="xref any 
...

See CI logs for the full diff.

@github-actions
Copy link

This PR causes the following changes to the html docs (ubuntu-latest-3.7-x64):

diff -r docs-base/BasicsAndPrimer.html docs-head/BasicsAndPrimer.html
269c269
< <a class="reference internal" href="index_logo_with_text.html#tutorial"><span class="std std-ref">tutorial</span></a> provides additional introductory material for those who are newer to computational modeling,
---
> <a class="reference internal" href="index.html#tutorial"><span class="std std-ref">tutorial</span></a> provides additional introductory material for those who are newer to computational modeling,
1128c1128
< <a class="reference internal" href="index_logo_with_text.html#tutorial"><span class="std std-ref">Tutorial</span></a> provides a more thorough, interactive introduction to its use, and the <a class="reference internal" href="UserGuide.html"><span class="doc">User's Guide</span></a> provides
---
> <a class="reference internal" href="index.html#tutorial"><span class="std std-ref">Tutorial</span></a> provides a more thorough, interactive introduction to its use, and the <a class="reference internal" href="UserGuide.html"><span class="doc">User's Guide</span></a> provides
diff -r docs-base/BeukersNBackModel.html docs-head/BeukersNBackModel.html
211c211
< <p>(Instructions for running the actual notebook can be found <a class="reference internal" href="index_logo_with_text.html#tutorial"><span class="std std-ref">here</span></a>, replacing <code class="docutils literal notranslate"><span class="pre">nback_nb</span></code> for <code class="docutils literal notranslate"><span class="pre">tutorial</span></code>)</p>
---
> <p>(Instructions for running the actual notebook can be found <a class="reference internal" href="index.html#tutorial"><span class="std std-ref">here</span></a>, replacing <code class="docutils literal notranslate"><span class="pre">nback_nb</span></code> for <code class="docutils literal notranslate"><span class="pre">tutorial</span></code>)</p>
diff -r docs-base/Compositions.html docs-head/Compositions.html
211a212
> <li class="toctree-l1"><a class="reference internal" href="EMComposition.html">EMComposition</a></li>
Only in docs-head: EMComposition.html
diff -r docs-base/Library.html docs-head/Library.html
274a275
> <li class="toctree-l2"><a class="reference internal" href="EMComposition.html">EMComposition</a></li>
diff -r docs-base/MemoryFunctions.html docs-head/MemoryFunctions.html
786,792c786,795
< <p id="contentaddressablememory-retrieval"><strong>Retrieval</strong>. Entries are retrieved from <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a> based on their distance from
< <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span></code></a>, used as the cue for retrieval. The distance is computed using the
< <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_function" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_function"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_function</span></code></a>, which compares <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span></code></a> with each entry in <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.storage_prob" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.storage_prob"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a> as full
< vectors (i.e., with all fields of each concatenated into a single array), or by computing the distance of each
< field in <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span></code></a> with the corresponding ones of each entry in <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a>, and then averaging those distances, possibly weighted by coefficients specified
< in <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_field_weights</span></code></a>. The distances computed between
< <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span> <span class="pre">`</span></code></a> and each entry in <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a> are
---
> <p id="contentaddressablememory-retrieval"><strong>Retrieval</strong>. Entries are retrieved from <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a> based on their distance
> from <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span></code></a>, used as the cue for retrieval. The distance is computed
> using the <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_function" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_function"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_function</span></code></a>, which compares <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span></code></a> with each entry in <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a>.
> If memories have more than one field, then the distances are computed in one of two ways: i) as full
> vectors (i.e., with all fields of each concatenated into a single array) if <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_field_weights</span></code></a> is a single scalar value or a list of identical values);
> or field-by-field, if <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_field_weights</span></code></a> is a list of
> non-identical values, by computing the distance of each field in <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span></code></a>
> with the corresponding ones of each entry in <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a>, and then averaging
> those distances weighted by the coefficients specified in <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_field_weights</span></code></a>. The distances computed between <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span>
> <span class="pre">`</span></code></a> and each entry in <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a> are then
838,839c841,842
< <li><p>if <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_field_weights</span></code></a> is an array of scalars with
< different values, then <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span></code></a> is compared with each entry in <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a> by using <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_function" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_function"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_function</span></code></a>
---
> <li><p>if <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_field_weights</span></code></a> is an array of non-identical
> scalars , then <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span></code></a> is compared with each entry in <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a> by using <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_function" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_function"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_function</span></code></a>
diff -r docs-base/ParameterEstimationComposition.html docs-head/ParameterEstimationComposition.html
36c36
<     <link rel="next" title="Subsystems" href="Subystems.html" />
---
>     <link rel="next" title="EMComposition" href="EMComposition.html" />
687c687
<         <a href="Subystems.html" class="btn btn-neutral float-right" title="Subsystems" accesskey="n" rel="next">Next <img src="_static/images/chevron-right-orange.svg" class="next-page"></a>
---
>         <a href="EMComposition.html" class="btn btn-neutral float-right" title="EMComposition" accesskey="n" rel="next">Next <img src="_static/images/chevron-right-orange.svg" class="next-page"></a>
diff -r docs-base/RefactoredLearningGuide.html docs-head/RefactoredLearningGuide.html
282c282
< <p>Notice that we no longer have to extract the target node from the <code class="xref any docutils literal notranslate"><span class="pre">add_backpropagation_learning_pathway</span> <span class="pre">method</span></code>, and can instead pass the targets as output nodes mapped to values, in a new parameter called <code class="xref any docutils literal notranslate"><span class="pre">targets</span></code> in the <a class="reference internal" href="AutodiffComposition.html#psyneulink.library.compositions.autodiffcomposition.AutodiffComposition.learn" title="psyneulink.library.compositions.autodiffcomposition.AutodiffComposition.learn"><code class="xref any py py-meth docutils literal notranslate"><span class="pre">learn</span></code></a> method.</p>
---
> <p>Notice that we no longer have to extract the target node from the <code class="xref any docutils literal notranslate"><span class="pre">add_backpropagation_learning_pathway</span> <span class="pre">method</span></code>, and can instead pass the targets as output nodes mapped to values, in a new parameter called <code class="xref any docutils literal notranslate"><span class="pre">targets</span></code> in the <a class="reference internal" href="EMComposition.html#psyneulink.library.compositions.emcomposition.EMComposition.learn" title="psyneulink.library.compositions.emcomposition.EMComposition.learn"><code class="xref any py py-meth docutils literal notranslate"><span class="pre">learn</span></code></a> method.</p>
287c287
< its constructor to be runtime parameters of its <a class="reference internal" href="AutodiffComposition.html#psyneulink.library.compositions.autodiffcomposition.AutodiffComposition.learn" title="psyneulink.library.compositions.autodiffcomposition.AutodiffComposition.learn"><code class="xref any 
...

See CI logs for the full diff.

@coveralls
Copy link

coveralls commented Jul 18, 2023

Coverage Status

coverage: 84.517% (+0.06%) from 84.455% when pulling 68d3ca1 on feat/em_composition into b2d22ec on devel.

@github-actions
Copy link

This PR causes the following changes to the html docs (ubuntu-latest-3.7-x64):

diff -r docs-base/BasicsAndPrimer.html docs-head/BasicsAndPrimer.html
269c269
< <a class="reference internal" href="index_logo_with_text.html#tutorial"><span class="std std-ref">tutorial</span></a> provides additional introductory material for those who are newer to computational modeling,
---
> <a class="reference internal" href="index.html#tutorial"><span class="std std-ref">tutorial</span></a> provides additional introductory material for those who are newer to computational modeling,
1128c1128
< <a class="reference internal" href="index_logo_with_text.html#tutorial"><span class="std std-ref">Tutorial</span></a> provides a more thorough, interactive introduction to its use, and the <a class="reference internal" href="UserGuide.html"><span class="doc">User's Guide</span></a> provides
---
> <a class="reference internal" href="index.html#tutorial"><span class="std std-ref">Tutorial</span></a> provides a more thorough, interactive introduction to its use, and the <a class="reference internal" href="UserGuide.html"><span class="doc">User's Guide</span></a> provides
diff -r docs-base/BeukersNBackModel.html docs-head/BeukersNBackModel.html
211c211
< <p>(Instructions for running the actual notebook can be found <a class="reference internal" href="index_logo_with_text.html#tutorial"><span class="std std-ref">here</span></a>, replacing <code class="docutils literal notranslate"><span class="pre">nback_nb</span></code> for <code class="docutils literal notranslate"><span class="pre">tutorial</span></code>)</p>
---
> <p>(Instructions for running the actual notebook can be found <a class="reference internal" href="index.html#tutorial"><span class="std std-ref">here</span></a>, replacing <code class="docutils literal notranslate"><span class="pre">nback_nb</span></code> for <code class="docutils literal notranslate"><span class="pre">tutorial</span></code>)</p>
diff -r docs-base/Compositions.html docs-head/Compositions.html
211a212
> <li class="toctree-l1"><a class="reference internal" href="EMComposition.html">EMComposition</a></li>
Only in docs-head: EMComposition.html
diff -r docs-base/Library.html docs-head/Library.html
274a275
> <li class="toctree-l2"><a class="reference internal" href="EMComposition.html">EMComposition</a></li>
diff -r docs-base/MemoryFunctions.html docs-head/MemoryFunctions.html
786,792c786,795
< <p id="contentaddressablememory-retrieval"><strong>Retrieval</strong>. Entries are retrieved from <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a> based on their distance from
< <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span></code></a>, used as the cue for retrieval. The distance is computed using the
< <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_function" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_function"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_function</span></code></a>, which compares <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span></code></a> with each entry in <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.storage_prob" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.storage_prob"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a> as full
< vectors (i.e., with all fields of each concatenated into a single array), or by computing the distance of each
< field in <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span></code></a> with the corresponding ones of each entry in <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a>, and then averaging those distances, possibly weighted by coefficients specified
< in <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_field_weights</span></code></a>. The distances computed between
< <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span> <span class="pre">`</span></code></a> and each entry in <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a> are
---
> <p id="contentaddressablememory-retrieval"><strong>Retrieval</strong>. Entries are retrieved from <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a> based on their distance
> from <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span></code></a>, used as the cue for retrieval. The distance is computed
> using the <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_function" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_function"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_function</span></code></a>, which compares <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span></code></a> with each entry in <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a>.
> If memories have more than one field, then the distances are computed in one of two ways: i) as full
> vectors (i.e., with all fields of each concatenated into a single array) if <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_field_weights</span></code></a> is a single scalar value or a list of identical values);
> or field-by-field, if <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_field_weights</span></code></a> is a list of
> non-identical values, by computing the distance of each field in <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span></code></a>
> with the corresponding ones of each entry in <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a>, and then averaging
> those distances weighted by the coefficients specified in <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_field_weights</span></code></a>. The distances computed between <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span>
> <span class="pre">`</span></code></a> and each entry in <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a> are then
838,839c841,842
< <li><p>if <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_field_weights</span></code></a> is an array of scalars with
< different values, then <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span></code></a> is compared with each entry in <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a> by using <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_function" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_function"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_function</span></code></a>
---
> <li><p>if <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_field_weights</span></code></a> is an array of non-identical
> scalars , then <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span></code></a> is compared with each entry in <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a> by using <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_function" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_function"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_function</span></code></a>
diff -r docs-base/ParameterEstimationComposition.html docs-head/ParameterEstimationComposition.html
36c36
<     <link rel="next" title="Subsystems" href="Subystems.html" />
---
>     <link rel="next" title="EMComposition" href="EMComposition.html" />
687c687
<         <a href="Subystems.html" class="btn btn-neutral float-right" title="Subsystems" accesskey="n" rel="next">Next <img src="_static/images/chevron-right-orange.svg" class="next-page"></a>
---
>         <a href="EMComposition.html" class="btn btn-neutral float-right" title="EMComposition" accesskey="n" rel="next">Next <img src="_static/images/chevron-right-orange.svg" class="next-page"></a>
diff -r docs-base/RefactoredLearningGuide.html docs-head/RefactoredLearningGuide.html
282c282
< <p>Notice that we no longer have to extract the target node from the <code class="xref any docutils literal notranslate"><span class="pre">add_backpropagation_learning_pathway</span> <span class="pre">method</span></code>, and can instead pass the targets as output nodes mapped to values, in a new parameter called <code class="xref any docutils literal notranslate"><span class="pre">targets</span></code> in the <a class="reference internal" href="AutodiffComposition.html#psyneulink.library.compositions.autodiffcomposition.AutodiffComposition.learn" title="psyneulink.library.compositions.autodiffcomposition.AutodiffComposition.learn"><code class="xref any py py-meth docutils literal notranslate"><span class="pre">learn</span></code></a> method.</p>
---
> <p>Notice that we no longer have to extract the target node from the <code class="xref any docutils literal notranslate"><span class="pre">add_backpropagation_learning_pathway</span> <span class="pre">method</span></code>, and can instead pass the targets as output nodes mapped to values, in a new parameter called <code class="xref any docutils literal notranslate"><span class="pre">targets</span></code> in the <a class="reference internal" href="EMComposition.html#psyneulink.library.compositions.emcomposition.EMComposition.learn" title="psyneulink.library.compositions.emcomposition.EMComposition.learn"><code class="xref any py py-meth docutils literal notranslate"><span class="pre">learn</span></code></a> method.</p>
287c287
< its constructor to be runtime parameters of its <a class="reference internal" href="AutodiffComposition.html#psyneulink.library.compositions.autodiffcomposition.AutodiffComposition.learn" title="psyneulink.library.compositions.autodiffcomposition.AutodiffComposition.learn"><code class="xref any 
...

See CI logs for the full diff.

@github-actions
Copy link

This PR causes the following changes to the html docs (ubuntu-latest-3.7-x64):

diff -r docs-base/BasicsAndPrimer.html docs-head/BasicsAndPrimer.html
269c269
< <a class="reference internal" href="index_logo_with_text.html#tutorial"><span class="std std-ref">tutorial</span></a> provides additional introductory material for those who are newer to computational modeling,
---
> <a class="reference internal" href="index.html#tutorial"><span class="std std-ref">tutorial</span></a> provides additional introductory material for those who are newer to computational modeling,
1128c1128
< <a class="reference internal" href="index_logo_with_text.html#tutorial"><span class="std std-ref">Tutorial</span></a> provides a more thorough, interactive introduction to its use, and the <a class="reference internal" href="UserGuide.html"><span class="doc">User's Guide</span></a> provides
---
> <a class="reference internal" href="index.html#tutorial"><span class="std std-ref">Tutorial</span></a> provides a more thorough, interactive introduction to its use, and the <a class="reference internal" href="UserGuide.html"><span class="doc">User's Guide</span></a> provides
diff -r docs-base/BeukersNBackModel.html docs-head/BeukersNBackModel.html
211c211
< <p>(Instructions for running the actual notebook can be found <a class="reference internal" href="index_logo_with_text.html#tutorial"><span class="std std-ref">here</span></a>, replacing <code class="docutils literal notranslate"><span class="pre">nback_nb</span></code> for <code class="docutils literal notranslate"><span class="pre">tutorial</span></code>)</p>
---
> <p>(Instructions for running the actual notebook can be found <a class="reference internal" href="index.html#tutorial"><span class="std std-ref">here</span></a>, replacing <code class="docutils literal notranslate"><span class="pre">nback_nb</span></code> for <code class="docutils literal notranslate"><span class="pre">tutorial</span></code>)</p>
diff -r docs-base/Compositions.html docs-head/Compositions.html
211a212
> <li class="toctree-l1"><a class="reference internal" href="EMComposition.html">EMComposition</a></li>
Only in docs-head: EMComposition.html
diff -r docs-base/Library.html docs-head/Library.html
274a275
> <li class="toctree-l2"><a class="reference internal" href="EMComposition.html">EMComposition</a></li>
diff -r docs-base/MemoryFunctions.html docs-head/MemoryFunctions.html
786,792c786,795
< <p id="contentaddressablememory-retrieval"><strong>Retrieval</strong>. Entries are retrieved from <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a> based on their distance from
< <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span></code></a>, used as the cue for retrieval. The distance is computed using the
< <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_function" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_function"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_function</span></code></a>, which compares <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span></code></a> with each entry in <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.storage_prob" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.storage_prob"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a> as full
< vectors (i.e., with all fields of each concatenated into a single array), or by computing the distance of each
< field in <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span></code></a> with the corresponding ones of each entry in <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a>, and then averaging those distances, possibly weighted by coefficients specified
< in <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_field_weights</span></code></a>. The distances computed between
< <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span> <span class="pre">`</span></code></a> and each entry in <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a> are
---
> <p id="contentaddressablememory-retrieval"><strong>Retrieval</strong>. Entries are retrieved from <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a> based on their distance
> from <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span></code></a>, used as the cue for retrieval. The distance is computed
> using the <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_function" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_function"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_function</span></code></a>, which compares <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span></code></a> with each entry in <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a>.
> If memories have more than one field, then the distances are computed in one of two ways: i) as full
> vectors (i.e., with all fields of each concatenated into a single array) if <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_field_weights</span></code></a> is a single scalar value or a list of identical values);
> or field-by-field, if <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_field_weights</span></code></a> is a list of
> non-identical values, by computing the distance of each field in <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span></code></a>
> with the corresponding ones of each entry in <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a>, and then averaging
> those distances weighted by the coefficients specified in <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_field_weights</span></code></a>. The distances computed between <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span>
> <span class="pre">`</span></code></a> and each entry in <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a> are then
838,839c841,842
< <li><p>if <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_field_weights</span></code></a> is an array of scalars with
< different values, then <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span></code></a> is compared with each entry in <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a> by using <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_function" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_function"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_function</span></code></a>
---
> <li><p>if <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_field_weights</span></code></a> is an array of non-identical
> scalars , then <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span></code></a> is compared with each entry in <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a> by using <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_function" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_function"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_function</span></code></a>
diff -r docs-base/ParameterEstimationComposition.html docs-head/ParameterEstimationComposition.html
36c36
<     <link rel="next" title="Subsystems" href="Subystems.html" />
---
>     <link rel="next" title="EMComposition" href="EMComposition.html" />
687c687
<         <a href="Subystems.html" class="btn btn-neutral float-right" title="Subsystems" accesskey="n" rel="next">Next <img src="_static/images/chevron-right-orange.svg" class="next-page"></a>
---
>         <a href="EMComposition.html" class="btn btn-neutral float-right" title="EMComposition" accesskey="n" rel="next">Next <img src="_static/images/chevron-right-orange.svg" class="next-page"></a>
diff -r docs-base/RefactoredLearningGuide.html docs-head/RefactoredLearningGuide.html
282c282
< <p>Notice that we no longer have to extract the target node from the <code class="xref any docutils literal notranslate"><span class="pre">add_backpropagation_learning_pathway</span> <span class="pre">method</span></code>, and can instead pass the targets as output nodes mapped to values, in a new parameter called <code class="xref any docutils literal notranslate"><span class="pre">targets</span></code> in the <a class="reference internal" href="AutodiffComposition.html#psyneulink.library.compositions.autodiffcomposition.AutodiffComposition.learn" title="psyneulink.library.compositions.autodiffcomposition.AutodiffComposition.learn"><code class="xref any py py-meth docutils literal notranslate"><span class="pre">learn</span></code></a> method.</p>
---
> <p>Notice that we no longer have to extract the target node from the <code class="xref any docutils literal notranslate"><span class="pre">add_backpropagation_learning_pathway</span> <span class="pre">method</span></code>, and can instead pass the targets as output nodes mapped to values, in a new parameter called <code class="xref any docutils literal notranslate"><span class="pre">targets</span></code> in the <a class="reference internal" href="EMComposition.html#psyneulink.library.compositions.emcomposition.EMComposition.learn" title="psyneulink.library.compositions.emcomposition.EMComposition.learn"><code class="xref any py py-meth docutils literal notranslate"><span class="pre">learn</span></code></a> method.</p>
287c287
< its constructor to be runtime parameters of its <a class="reference internal" href="AutodiffComposition.html#psyneulink.library.compositions.autodiffcomposition.AutodiffComposition.learn" title="psyneulink.library.compositions.autodiffcomposition.AutodiffComposition.learn"><code class="xref any 
...

See CI logs for the full diff.

  - field_weights normalized

• test_emcomposition.py
  - test_simple_retrieval_without_storage_or_decay() - passes for normalized field_weights
@github-actions
Copy link

This PR causes the following changes to the html docs (ubuntu-latest-3.7-x64):

diff -r docs-base/BasicsAndPrimer.html docs-head/BasicsAndPrimer.html
269c269
< <a class="reference internal" href="index_logo_with_text.html#tutorial"><span class="std std-ref">tutorial</span></a> provides additional introductory material for those who are newer to computational modeling,
---
> <a class="reference internal" href="index.html#tutorial"><span class="std std-ref">tutorial</span></a> provides additional introductory material for those who are newer to computational modeling,
1128c1128
< <a class="reference internal" href="index_logo_with_text.html#tutorial"><span class="std std-ref">Tutorial</span></a> provides a more thorough, interactive introduction to its use, and the <a class="reference internal" href="UserGuide.html"><span class="doc">User's Guide</span></a> provides
---
> <a class="reference internal" href="index.html#tutorial"><span class="std std-ref">Tutorial</span></a> provides a more thorough, interactive introduction to its use, and the <a class="reference internal" href="UserGuide.html"><span class="doc">User's Guide</span></a> provides
diff -r docs-base/BeukersNBackModel.html docs-head/BeukersNBackModel.html
211c211
< <p>(Instructions for running the actual notebook can be found <a class="reference internal" href="index_logo_with_text.html#tutorial"><span class="std std-ref">here</span></a>, replacing <code class="docutils literal notranslate"><span class="pre">nback_nb</span></code> for <code class="docutils literal notranslate"><span class="pre">tutorial</span></code>)</p>
---
> <p>(Instructions for running the actual notebook can be found <a class="reference internal" href="index.html#tutorial"><span class="std std-ref">here</span></a>, replacing <code class="docutils literal notranslate"><span class="pre">nback_nb</span></code> for <code class="docutils literal notranslate"><span class="pre">tutorial</span></code>)</p>
diff -r docs-base/Compositions.html docs-head/Compositions.html
211a212
> <li class="toctree-l1"><a class="reference internal" href="EMComposition.html">EMComposition</a></li>
Only in docs-head: EMComposition.html
diff -r docs-base/InputPort.html docs-head/InputPort.html
735c735,736
< This  is useful for assignment to a Mechanism that needs a fixed value as the input to its <a class="reference internal" href="Mechanism.html#psyneulink.core.components.mechanisms.mechanism.Mechanism_Base.function" title="psyneulink.core.components.mechanisms.mechanism.Mechanism_Base.function"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">function</span></code></a>.</p>
---
> This  is useful for assignment to a Mechanism that needs a constant (i.e., fixed value) as the input to its
> <a class="reference internal" href="Mechanism.html#psyneulink.core.components.mechanisms.mechanism.Mechanism_Base.function" title="psyneulink.core.components.mechanisms.mechanism.Mechanism_Base.function"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">function</span></code></a>.</p>
diff -r docs-base/Library.html docs-head/Library.html
274a275
> <li class="toctree-l2"><a class="reference internal" href="EMComposition.html">EMComposition</a></li>
diff -r docs-base/MemoryFunctions.html docs-head/MemoryFunctions.html
786,792c786,795
< <p id="contentaddressablememory-retrieval"><strong>Retrieval</strong>. Entries are retrieved from <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a> based on their distance from
< <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span></code></a>, used as the cue for retrieval. The distance is computed using the
< <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_function" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_function"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_function</span></code></a>, which compares <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span></code></a> with each entry in <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.storage_prob" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.storage_prob"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a> as full
< vectors (i.e., with all fields of each concatenated into a single array), or by computing the distance of each
< field in <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span></code></a> with the corresponding ones of each entry in <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a>, and then averaging those distances, possibly weighted by coefficients specified
< in <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_field_weights</span></code></a>. The distances computed between
< <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span> <span class="pre">`</span></code></a> and each entry in <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a> are
---
> <p id="contentaddressablememory-retrieval"><strong>Retrieval</strong>. Entries are retrieved from <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a> based on their distance
> from <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span></code></a>, used as the cue for retrieval. The distance is computed
> using the <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_function" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_function"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_function</span></code></a>, which compares <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span></code></a> with each entry in <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a>.
> If memories have more than one field, then the distances are computed in one of two ways: i) as full
> vectors (i.e., with all fields of each concatenated into a single array) if <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_field_weights</span></code></a> is a single scalar value or a list of identical values);
> or field-by-field, if <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_field_weights</span></code></a> is a list of
> non-identical values, by computing the distance of each field in <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span></code></a>
> with the corresponding ones of each entry in <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a>, and then averaging
> those distances weighted by the coefficients specified in <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_field_weights</span></code></a>. The distances computed between <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span>
> <span class="pre">`</span></code></a> and each entry in <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a> are then
838,839c841,842
< <li><p>if <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_field_weights</span></code></a> is an array of scalars with
< different values, then <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span></code></a> is compared with each entry in <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a> by using <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_function" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_function"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_function</span></code></a>
---
> <li><p>if <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_field_weights</span></code></a> is an array of non-identical
> scalars , then <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span></code></a> is compared with each entry in <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a> by using <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_function" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_function"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_function</span></code></a>
diff -r docs-base/ParameterEstimationComposition.html docs-head/ParameterEstimationComposition.html
36c36
<     <link rel="next" title="Subsystems" href="Subystems.html" />
---
>     <link rel="next" title="EMComposition" href="EMComposition.html" />
687c687
<         <a href="Subystems.html" class="btn btn-neutral float-right" title="Subsystems" accesskey="n" rel="next">Next <img src="_static/images/chevron-right-orange.svg" class="next-page"></a>
---
>         <a href="EMComposition.html" class="btn btn-neutral float-right" title="EMComposition" accesskey="n" rel="next">Next <img src="_static/images/chevron-right-orange.svg" class="next-page"></a>
diff -r docs-base/RefactoredLearningGuide.html docs-head/RefactoredLearningGuide.html
282c282
< <p>Notice that we no longer have to extract the target node from the <code class="xref any docutils literal notranslate"><span class="pre">add_backpropagation_learning_pathway</span> <span class="pre">method</span></code>, and can instead pass the targets as output nodes mapped to values, in a new parameter called <code class="xref any docutils literal notranslate"><span class="pre">targets</span></code> in the <a class="reference internal" href="AutodiffComposition.html#psyneulink.library.compositions.autodiffcomposition.AutodiffComposition.learn" title="psyneulink.library.compositions.autodiffcomposition.AutodiffComposition.learn"><code class="xref any py py-meth docutils literal notranslate"><span class="pre">learn</span></code></a> method.</p>
---
> <p>Notice that we no longer have to extract the target node from the <code class="xref any docutils literal notranslate">
...

See CI logs for the full diff.

  - field_weights normalized

• test_emcomposition.py
  - test_simple_retrieval_without_storage_or_decay() - passes for normalized field_weights
@github-actions
Copy link

This PR causes the following changes to the html docs (ubuntu-latest-3.7-x64):

diff -r docs-base/BasicsAndPrimer.html docs-head/BasicsAndPrimer.html
269c269
< <a class="reference internal" href="index_logo_with_text.html#tutorial"><span class="std std-ref">tutorial</span></a> provides additional introductory material for those who are newer to computational modeling,
---
> <a class="reference internal" href="index.html#tutorial"><span class="std std-ref">tutorial</span></a> provides additional introductory material for those who are newer to computational modeling,
1128c1128
< <a class="reference internal" href="index_logo_with_text.html#tutorial"><span class="std std-ref">Tutorial</span></a> provides a more thorough, interactive introduction to its use, and the <a class="reference internal" href="UserGuide.html"><span class="doc">User's Guide</span></a> provides
---
> <a class="reference internal" href="index.html#tutorial"><span class="std std-ref">Tutorial</span></a> provides a more thorough, interactive introduction to its use, and the <a class="reference internal" href="UserGuide.html"><span class="doc">User's Guide</span></a> provides
diff -r docs-base/BeukersNBackModel.html docs-head/BeukersNBackModel.html
211c211
< <p>(Instructions for running the actual notebook can be found <a class="reference internal" href="index_logo_with_text.html#tutorial"><span class="std std-ref">here</span></a>, replacing <code class="docutils literal notranslate"><span class="pre">nback_nb</span></code> for <code class="docutils literal notranslate"><span class="pre">tutorial</span></code>)</p>
---
> <p>(Instructions for running the actual notebook can be found <a class="reference internal" href="index.html#tutorial"><span class="std std-ref">here</span></a>, replacing <code class="docutils literal notranslate"><span class="pre">nback_nb</span></code> for <code class="docutils literal notranslate"><span class="pre">tutorial</span></code>)</p>
diff -r docs-base/Compositions.html docs-head/Compositions.html
211a212
> <li class="toctree-l1"><a class="reference internal" href="EMComposition.html">EMComposition</a></li>
Only in docs-head: EMComposition.html
diff -r docs-base/InputPort.html docs-head/InputPort.html
735c735,736
< This  is useful for assignment to a Mechanism that needs a fixed value as the input to its <a class="reference internal" href="Mechanism.html#psyneulink.core.components.mechanisms.mechanism.Mechanism_Base.function" title="psyneulink.core.components.mechanisms.mechanism.Mechanism_Base.function"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">function</span></code></a>.</p>
---
> This  is useful for assignment to a Mechanism that needs a constant (i.e., fixed value) as the input to its
> <a class="reference internal" href="Mechanism.html#psyneulink.core.components.mechanisms.mechanism.Mechanism_Base.function" title="psyneulink.core.components.mechanisms.mechanism.Mechanism_Base.function"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">function</span></code></a>.</p>
diff -r docs-base/Library.html docs-head/Library.html
274a275
> <li class="toctree-l2"><a class="reference internal" href="EMComposition.html">EMComposition</a></li>
diff -r docs-base/MemoryFunctions.html docs-head/MemoryFunctions.html
786,792c786,795
< <p id="contentaddressablememory-retrieval"><strong>Retrieval</strong>. Entries are retrieved from <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a> based on their distance from
< <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span></code></a>, used as the cue for retrieval. The distance is computed using the
< <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_function" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_function"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_function</span></code></a>, which compares <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span></code></a> with each entry in <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.storage_prob" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.storage_prob"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a> as full
< vectors (i.e., with all fields of each concatenated into a single array), or by computing the distance of each
< field in <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span></code></a> with the corresponding ones of each entry in <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a>, and then averaging those distances, possibly weighted by coefficients specified
< in <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_field_weights</span></code></a>. The distances computed between
< <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span> <span class="pre">`</span></code></a> and each entry in <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a> are
---
> <p id="contentaddressablememory-retrieval"><strong>Retrieval</strong>. Entries are retrieved from <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a> based on their distance
> from <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span></code></a>, used as the cue for retrieval. The distance is computed
> using the <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_function" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_function"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_function</span></code></a>, which compares <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span></code></a> with each entry in <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a>.
> If memories have more than one field, then the distances are computed in one of two ways: i) as full
> vectors (i.e., with all fields of each concatenated into a single array) if <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_field_weights</span></code></a> is a single scalar value or a list of identical values);
> or field-by-field, if <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_field_weights</span></code></a> is a list of
> non-identical values, by computing the distance of each field in <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span></code></a>
> with the corresponding ones of each entry in <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a>, and then averaging
> those distances weighted by the coefficients specified in <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_field_weights</span></code></a>. The distances computed between <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span>
> <span class="pre">`</span></code></a> and each entry in <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a> are then
838,839c841,842
< <li><p>if <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_field_weights</span></code></a> is an array of scalars with
< different values, then <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span></code></a> is compared with each entry in <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a> by using <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_function" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_function"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_function</span></code></a>
---
> <li><p>if <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_field_weights</span></code></a> is an array of non-identical
> scalars , then <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span></code></a> is compared with each entry in <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a> by using <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_function" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_function"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_function</span></code></a>
diff -r docs-base/ParameterEstimationComposition.html docs-head/ParameterEstimationComposition.html
36c36
<     <link rel="next" title="Subsystems" href="Subystems.html" />
---
>     <link rel="next" title="EMComposition" href="EMComposition.html" />
687c687
<         <a href="Subystems.html" class="btn btn-neutral float-right" title="Subsystems" accesskey="n" rel="next">Next <img src="_static/images/chevron-right-orange.svg" class="next-page"></a>
---
>         <a href="EMComposition.html" class="btn btn-neutral float-right" title="EMComposition" accesskey="n" rel="next">Next <img src="_static/images/chevron-right-orange.svg" class="next-page"></a>
diff -r docs-base/RefactoredLearningGuide.html docs-head/RefactoredLearningGuide.html
282c282
< <p>Notice that we no longer have to extract the target node from the <code class="xref any docutils literal notranslate"><span class="pre">add_backpropagation_learning_pathway</span> <span class="pre">method</span></code>, and can instead pass the targets as output nodes mapped to values, in a new parameter called <code class="xref any docutils literal notranslate"><span class="pre">targets</span></code> in the <a class="reference internal" href="AutodiffComposition.html#psyneulink.library.compositions.autodiffcomposition.AutodiffComposition.learn" title="psyneulink.library.compositions.autodiffcomposition.AutodiffComposition.learn"><code class="xref any py py-meth docutils literal notranslate"><span class="pre">learn</span></code></a> method.</p>
---
> <p>Notice that we no longer have to extract the target node from the <code class="xref any docutils literal notranslate">
...

See CI logs for the full diff.

@github-actions
Copy link

This PR causes the following changes to the html docs (ubuntu-latest-3.7-x64):

diff -r docs-base/BasicsAndPrimer.html docs-head/BasicsAndPrimer.html
269c269
< <a class="reference internal" href="index_logo_with_text.html#tutorial"><span class="std std-ref">tutorial</span></a> provides additional introductory material for those who are newer to computational modeling,
---
> <a class="reference internal" href="index.html#tutorial"><span class="std std-ref">tutorial</span></a> provides additional introductory material for those who are newer to computational modeling,
1128c1128
< <a class="reference internal" href="index_logo_with_text.html#tutorial"><span class="std std-ref">Tutorial</span></a> provides a more thorough, interactive introduction to its use, and the <a class="reference internal" href="UserGuide.html"><span class="doc">User's Guide</span></a> provides
---
> <a class="reference internal" href="index.html#tutorial"><span class="std std-ref">Tutorial</span></a> provides a more thorough, interactive introduction to its use, and the <a class="reference internal" href="UserGuide.html"><span class="doc">User's Guide</span></a> provides
diff -r docs-base/BeukersNBackModel.html docs-head/BeukersNBackModel.html
211c211
< <p>(Instructions for running the actual notebook can be found <a class="reference internal" href="index_logo_with_text.html#tutorial"><span class="std std-ref">here</span></a>, replacing <code class="docutils literal notranslate"><span class="pre">nback_nb</span></code> for <code class="docutils literal notranslate"><span class="pre">tutorial</span></code>)</p>
---
> <p>(Instructions for running the actual notebook can be found <a class="reference internal" href="index.html#tutorial"><span class="std std-ref">here</span></a>, replacing <code class="docutils literal notranslate"><span class="pre">nback_nb</span></code> for <code class="docutils literal notranslate"><span class="pre">tutorial</span></code>)</p>
diff -r docs-base/Compositions.html docs-head/Compositions.html
211a212
> <li class="toctree-l1"><a class="reference internal" href="EMComposition.html">EMComposition</a></li>
Only in docs-head: EMComposition.html
diff -r docs-base/InputPort.html docs-head/InputPort.html
735c735,736
< This  is useful for assignment to a Mechanism that needs a fixed value as the input to its <a class="reference internal" href="Mechanism.html#psyneulink.core.components.mechanisms.mechanism.Mechanism_Base.function" title="psyneulink.core.components.mechanisms.mechanism.Mechanism_Base.function"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">function</span></code></a>.</p>
---
> This  is useful for assignment to a Mechanism that needs a constant (i.e., fixed value) as the input to its
> <a class="reference internal" href="Mechanism.html#psyneulink.core.components.mechanisms.mechanism.Mechanism_Base.function" title="psyneulink.core.components.mechanisms.mechanism.Mechanism_Base.function"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">function</span></code></a>.</p>
diff -r docs-base/Library.html docs-head/Library.html
274a275
> <li class="toctree-l2"><a class="reference internal" href="EMComposition.html">EMComposition</a></li>
diff -r docs-base/MemoryFunctions.html docs-head/MemoryFunctions.html
786,792c786,795
< <p id="contentaddressablememory-retrieval"><strong>Retrieval</strong>. Entries are retrieved from <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a> based on their distance from
< <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span></code></a>, used as the cue for retrieval. The distance is computed using the
< <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_function" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_function"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_function</span></code></a>, which compares <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span></code></a> with each entry in <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.storage_prob" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.storage_prob"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a> as full
< vectors (i.e., with all fields of each concatenated into a single array), or by computing the distance of each
< field in <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span></code></a> with the corresponding ones of each entry in <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a>, and then averaging those distances, possibly weighted by coefficients specified
< in <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_field_weights</span></code></a>. The distances computed between
< <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span> <span class="pre">`</span></code></a> and each entry in <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a> are
---
> <p id="contentaddressablememory-retrieval"><strong>Retrieval</strong>. Entries are retrieved from <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a> based on their distance
> from <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span></code></a>, used as the cue for retrieval. The distance is computed
> using the <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_function" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_function"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_function</span></code></a>, which compares <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span></code></a> with each entry in <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a>.
> If memories have more than one field, then the distances are computed in one of two ways: i) as full
> vectors (i.e., with all fields of each concatenated into a single array) if <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_field_weights</span></code></a> is a single scalar value or a list of identical values);
> or field-by-field, if <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_field_weights</span></code></a> is a list of
> non-identical values, by computing the distance of each field in <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span></code></a>
> with the corresponding ones of each entry in <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a>, and then averaging
> those distances weighted by the coefficients specified in <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_field_weights</span></code></a>. The distances computed between <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span>
> <span class="pre">`</span></code></a> and each entry in <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a> are then
838,839c841,842
< <li><p>if <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_field_weights</span></code></a> is an array of scalars with
< different values, then <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span></code></a> is compared with each entry in <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a> by using <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_function" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_function"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_function</span></code></a>
---
> <li><p>if <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_field_weights</span></code></a> is an array of non-identical
> scalars , then <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span></code></a> is compared with each entry in <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a> by using <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_function" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_function"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_function</span></code></a>
diff -r docs-base/ParameterEstimationComposition.html docs-head/ParameterEstimationComposition.html
36c36
<     <link rel="next" title="Subsystems" href="Subystems.html" />
---
>     <link rel="next" title="EMComposition" href="EMComposition.html" />
687c687
<         <a href="Subystems.html" class="btn btn-neutral float-right" title="Subsystems" accesskey="n" rel="next">Next <img src="_static/images/chevron-right-orange.svg" class="next-page"></a>
---
>         <a href="EMComposition.html" class="btn btn-neutral float-right" title="EMComposition" accesskey="n" rel="next">Next <img src="_static/images/chevron-right-orange.svg" class="next-page"></a>
diff -r docs-base/RefactoredLearningGuide.html docs-head/RefactoredLearningGuide.html
282c282
< <p>Notice that we no longer have to extract the target node from the <code class="xref any docutils literal notranslate"><span class="pre">add_backpropagation_learning_pathway</span> <span class="pre">method</span></code>, and can instead pass the targets as output nodes mapped to values, in a new parameter called <code class="xref any docutils literal notranslate"><span class="pre">targets</span></code> in the <a class="reference internal" href="AutodiffComposition.html#psyneulink.library.compositions.autodiffcomposition.AutodiffComposition.learn" title="psyneulink.library.compositions.autodiffcomposition.AutodiffComposition.learn"><code class="xref any py py-meth docutils literal notranslate"><span class="pre">learn</span></code></a> method.</p>
---
> <p>Notice that we no longer have to extract the target node from the <code class="xref any docutils literal notranslate">
...

See CI logs for the full diff.

@github-actions
Copy link

This PR causes the following changes to the html docs (ubuntu-latest-3.7-x64):

diff -r docs-base/BasicsAndPrimer.html docs-head/BasicsAndPrimer.html
269c269
< <a class="reference internal" href="index_logo_with_text.html#tutorial"><span class="std std-ref">tutorial</span></a> provides additional introductory material for those who are newer to computational modeling,
---
> <a class="reference internal" href="index.html#tutorial"><span class="std std-ref">tutorial</span></a> provides additional introductory material for those who are newer to computational modeling,
1128c1128
< <a class="reference internal" href="index_logo_with_text.html#tutorial"><span class="std std-ref">Tutorial</span></a> provides a more thorough, interactive introduction to its use, and the <a class="reference internal" href="UserGuide.html"><span class="doc">User's Guide</span></a> provides
---
> <a class="reference internal" href="index.html#tutorial"><span class="std std-ref">Tutorial</span></a> provides a more thorough, interactive introduction to its use, and the <a class="reference internal" href="UserGuide.html"><span class="doc">User's Guide</span></a> provides
diff -r docs-base/BeukersNBackModel.html docs-head/BeukersNBackModel.html
211c211
< <p>(Instructions for running the actual notebook can be found <a class="reference internal" href="index_logo_with_text.html#tutorial"><span class="std std-ref">here</span></a>, replacing <code class="docutils literal notranslate"><span class="pre">nback_nb</span></code> for <code class="docutils literal notranslate"><span class="pre">tutorial</span></code>)</p>
---
> <p>(Instructions for running the actual notebook can be found <a class="reference internal" href="index.html#tutorial"><span class="std std-ref">here</span></a>, replacing <code class="docutils literal notranslate"><span class="pre">nback_nb</span></code> for <code class="docutils literal notranslate"><span class="pre">tutorial</span></code>)</p>
diff -r docs-base/Compositions.html docs-head/Compositions.html
211a212
> <li class="toctree-l1"><a class="reference internal" href="EMComposition.html">EMComposition</a></li>
Only in docs-head: EMComposition.html
diff -r docs-base/InputPort.html docs-head/InputPort.html
735c735,736
< This  is useful for assignment to a Mechanism that needs a fixed value as the input to its <a class="reference internal" href="Mechanism.html#psyneulink.core.components.mechanisms.mechanism.Mechanism_Base.function" title="psyneulink.core.components.mechanisms.mechanism.Mechanism_Base.function"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">function</span></code></a>.</p>
---
> This  is useful for assignment to a Mechanism that needs a constant (i.e., fixed value) as the input to its
> <a class="reference internal" href="Mechanism.html#psyneulink.core.components.mechanisms.mechanism.Mechanism_Base.function" title="psyneulink.core.components.mechanisms.mechanism.Mechanism_Base.function"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">function</span></code></a>.</p>
diff -r docs-base/Library.html docs-head/Library.html
274a275
> <li class="toctree-l2"><a class="reference internal" href="EMComposition.html">EMComposition</a></li>
diff -r docs-base/MemoryFunctions.html docs-head/MemoryFunctions.html
786,792c786,795
< <p id="contentaddressablememory-retrieval"><strong>Retrieval</strong>. Entries are retrieved from <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a> based on their distance from
< <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span></code></a>, used as the cue for retrieval. The distance is computed using the
< <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_function" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_function"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_function</span></code></a>, which compares <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span></code></a> with each entry in <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.storage_prob" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.storage_prob"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a> as full
< vectors (i.e., with all fields of each concatenated into a single array), or by computing the distance of each
< field in <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span></code></a> with the corresponding ones of each entry in <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a>, and then averaging those distances, possibly weighted by coefficients specified
< in <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_field_weights</span></code></a>. The distances computed between
< <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span> <span class="pre">`</span></code></a> and each entry in <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a> are
---
> <p id="contentaddressablememory-retrieval"><strong>Retrieval</strong>. Entries are retrieved from <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a> based on their distance
> from <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span></code></a>, used as the cue for retrieval. The distance is computed
> using the <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_function" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_function"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_function</span></code></a>, which compares <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span></code></a> with each entry in <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a>.
> If memories have more than one field, then the distances are computed in one of two ways: i) as full
> vectors (i.e., with all fields of each concatenated into a single array) if <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_field_weights</span></code></a> is a single scalar value or a list of identical values);
> or field-by-field, if <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_field_weights</span></code></a> is a list of
> non-identical values, by computing the distance of each field in <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span></code></a>
> with the corresponding ones of each entry in <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a>, and then averaging
> those distances weighted by the coefficients specified in <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_field_weights</span></code></a>. The distances computed between <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span>
> <span class="pre">`</span></code></a> and each entry in <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a> are then
838,839c841,842
< <li><p>if <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_field_weights</span></code></a> is an array of scalars with
< different values, then <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span></code></a> is compared with each entry in <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a> by using <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_function" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_function"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_function</span></code></a>
---
> <li><p>if <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_field_weights</span></code></a> is an array of non-identical
> scalars , then <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span></code></a> is compared with each entry in <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a> by using <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_function" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_function"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_function</span></code></a>
diff -r docs-base/ParameterEstimationComposition.html docs-head/ParameterEstimationComposition.html
36c36
<     <link rel="next" title="Subsystems" href="Subystems.html" />
---
>     <link rel="next" title="EMComposition" href="EMComposition.html" />
687c687
<         <a href="Subystems.html" class="btn btn-neutral float-right" title="Subsystems" accesskey="n" rel="next">Next <img src="_static/images/chevron-right-orange.svg" class="next-page"></a>
---
>         <a href="EMComposition.html" class="btn btn-neutral float-right" title="EMComposition" accesskey="n" rel="next">Next <img src="_static/images/chevron-right-orange.svg" class="next-page"></a>
diff -r docs-base/RefactoredLearningGuide.html docs-head/RefactoredLearningGuide.html
282c282
< <p>Notice that we no longer have to extract the target node from the <code class="xref any docutils literal notranslate"><span class="pre">add_backpropagation_learning_pathway</span> <span class="pre">method</span></code>, and can instead pass the targets as output nodes mapped to values, in a new parameter called <code class="xref any docutils literal notranslate"><span class="pre">targets</span></code> in the <a class="reference internal" href="AutodiffComposition.html#psyneulink.library.compositions.autodiffcomposition.AutodiffComposition.learn" title="psyneulink.library.compositions.autodiffcomposition.AutodiffComposition.learn"><code class="xref any py py-meth docutils literal notranslate"><span class="pre">learn</span></code></a> method.</p>
---
> <p>Notice that we no longer have to extract the target node from the <code class="xref any docutils literal notranslate">
...

See CI logs for the full diff.

  - __init__(): add **kwargs

• emcomposition.py
  - __init__(): pass args to super
  - _construct_retrieval_weighting(): fixed bug; now uses single InputPort
  - _construct_retrieval_weighting(): fixed bug; now uses single InputPort
…PARAMS

# Conflicts:
#	tests/composition/test_emcomposition.py
  - refactored to use local args until super()
  - refactored to use local args until super()
@github-actions
Copy link

This PR causes the following changes to the html docs (ubuntu-latest-3.7-x64):

diff -r docs-base/AutodiffComposition.html docs-head/AutodiffComposition.html
415c415
< <em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">psyneulink.library.compositions.autodiffcomposition.</span></span><span class="sig-name descname"><span class="pre">AutodiffComposition</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">pathways</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">learning_rate</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">optimizer_type</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'sgd'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">weight_decay</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">loss_spec</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">Loss.MSE</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">disable_learning</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">refresh_losses</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">disable_cuda</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">cuda_index</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">force_no_retain_graph</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">name</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'autodiff_composition'</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#psyneulink.library.compositions.autodiffcomposition.AutodiffComposition" title="Permalink to this definition">¶</a></dt>
---
> <em class="property"><span class="pre">class</span> </em><span class="sig-prename descclassname"><span class="pre">psyneulink.library.compositions.autodiffcomposition.</span></span><span class="sig-name descname"><span class="pre">AutodiffComposition</span></span><span class="sig-paren">(</span><em class="sig-param"><span class="n"><span class="pre">pathways</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">learning_rate</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">optimizer_type</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'sgd'</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">weight_decay</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">0</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">loss_spec</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">Loss.MSE</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">disable_learning</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">refresh_losses</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">disable_cuda</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">True</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">cuda_index</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">None</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">force_no_retain_graph</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">False</span></span></em>, <em class="sig-param"><span class="n"><span class="pre">name</span></span><span class="o"><span class="pre">=</span></span><span class="default_value"><span class="pre">'autodiff_composition'</span></span></em>, <em class="sig-param"><span class="o"><span class="pre">**</span></span><span class="n"><span class="pre">kwargs</span></span></em><span class="sig-paren">)</span><a class="headerlink" href="#psyneulink.library.compositions.autodiffcomposition.AutodiffComposition" title="Permalink to this definition">¶</a></dt>
diff -r docs-base/BasicsAndPrimer.html docs-head/BasicsAndPrimer.html
269c269
< <a class="reference internal" href="index_logo_with_text.html#tutorial"><span class="std std-ref">tutorial</span></a> provides additional introductory material for those who are newer to computational modeling,
---
> <a class="reference internal" href="index.html#tutorial"><span class="std std-ref">tutorial</span></a> provides additional introductory material for those who are newer to computational modeling,
1128c1128
< <a class="reference internal" href="index_logo_with_text.html#tutorial"><span class="std std-ref">Tutorial</span></a> provides a more thorough, interactive introduction to its use, and the <a class="reference internal" href="UserGuide.html"><span class="doc">User's Guide</span></a> provides
---
> <a class="reference internal" href="index.html#tutorial"><span class="std std-ref">Tutorial</span></a> provides a more thorough, interactive introduction to its use, and the <a class="reference internal" href="UserGuide.html"><span class="doc">User's Guide</span></a> provides
diff -r docs-base/BeukersNBackModel.html docs-head/BeukersNBackModel.html
211c211
< <p>(Instructions for running the actual notebook can be found <a class="reference internal" href="index_logo_with_text.html#tutorial"><span class="std std-ref">here</span></a>, replacing <code class="docutils literal notranslate"><span class="pre">nback_nb</span></code> for <code class="docutils literal notranslate"><span class="pre">tutorial</span></code>)</p>
---
> <p>(Instructions for running the actual notebook can be found <a class="reference internal" href="index.html#tutorial"><span class="std std-ref">here</span></a>, replacing <code class="docutils literal notranslate"><span class="pre">nback_nb</span></code> for <code class="docutils literal notranslate"><span class="pre">tutorial</span></code>)</p>
diff -r docs-base/Compositions.html docs-head/Compositions.html
211a212
> <li class="toctree-l1"><a class="reference internal" href="EMComposition.html">EMComposition</a></li>
Only in docs-head: EMComposition.html
diff -r docs-base/InputPort.html docs-head/InputPort.html
735c735,736
< This  is useful for assignment to a Mechanism that needs a fixed value as the input to its <a class="reference internal" href="Mechanism.html#psyneulink.core.components.mechanisms.mechanism.Mechanism_Base.function" title="psyneulink.core.components.mechanisms.mechanism.Mechanism_Base.function"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">function</span></code></a>.</p>
---
> This  is useful for assignment to a Mechanism that needs a constant (i.e., fixed value) as the input to its
> <a class="reference internal" href="Mechanism.html#psyneulink.core.components.mechanisms.mechanism.Mechanism_Base.function" title="psyneulink.core.components.mechanisms.mechanism.Mechanism_Base.function"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">function</span></code></a>.</p>
diff -r docs-base/Library.html docs-head/Library.html
274a275
> <li class="toctree-l2"><a class="reference internal" href="EMComposition.html">EMComposition</a></li>
diff -r docs-base/MemoryFunctions.html docs-head/MemoryFunctions.html
786,792c786,795
< <p id="contentaddressablememory-retrieval"><strong>Retrieval</strong>. Entries are retrieved from <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a> based on their distance from
< <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span></code></a>, used as the cue for retrieval. The distance is computed using the
< <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_function" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_function"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_function</span></code></a>, which compares <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span></code></a> with each entry in <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.storage_prob" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.storage_prob"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a> as full
< vectors (i.e., with all fields of each concatenated into a single array), or by computing the distance of each
< field in <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span></code></a> with the corresponding ones of each entry in <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a>, and then averaging those distances, possibly weighted by coefficients specified
< in <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_field_weights</span></code></a>. The distances computed between
< <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span> <span class="pre">`</span></code></a> and each entry in <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a> are
---
> <p id="contentaddressablememory-retrieval"><strong>Retrieval</strong>. Entries are retrieved from <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a> based on their distance
> from <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span></code></a>, used as the cue for retrieval. The distance is computed
> using the <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_function" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_function"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_function</span></code></a>, which compares <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span></code></a> with each entry in <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a>.
> If memories have more than one field, then the distances are computed in one of two ways: i) as full
> vectors (i.e., with all fields of each concatenated into a single array) if <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_field_weights</span></code></a> is a single scalar value or a list of identical values);
> or field-by-field, if <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.distance_field_weights"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">distance_field_weights</span></code></a> is a list of
> non-identical values, by computing the distance of each field in <a class="reference internal" href="#psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.variable"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">variable</span></code></a>
> with the corresponding ones of each entry in <a class="reference internal" href="#id0" title="psyneulink.core.components.functions.stateful.memoryfunctions.ContentAddressableMemory.memory"><code class="xref any py py-attr docutils literal notranslate"><span class="pre">memory</span></code></a>, and then averaging
> those distances weighted by the c
...

See CI logs for the full diff.

@jdcpni jdcpni merged commit b65134e into devel Jul 19, 2023
@jdcpni jdcpni deleted the feat/em_composition branch July 19, 2023 19:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants