# Understanding HTM

**URL:** <https://discourse.numenta.org/t/understanding-htm/5929>\
**Category:** Getting Started\
**Tags:** question\
**Created:** [May 1, 2019, 11:02pm UTC](https://discourse.numenta.org/t/understanding-htm/5929 "2019-05-01T23:02:07Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![kashyap](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.numenta.org/kashyap/32/1704_2.png) [@kashyap](https://discourse.numenta.org/u/kashyap)\
**Post date:** [May 1, 2019, 11:02pm UTC](https://discourse.numenta.org/t/understanding-htm/5929/1 "2019-05-01T23:02:08Z")

</div>

Hi,  
After reading Mr Hawkin’s book (and watching his videos) I get the idea that human brain is a memory system and it’s simply predicting all the time. However, I am having trouble visualizing an implementation. Is there a tiny implementation out there that captures the essence of SDR and how it is subsequently used? With perhaps minimal number of neurons.  
Regards,  
Kashyap

---

<div class="post-metadata">

**Author:** ![Bitking](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.numenta.org/bitking/32/3099_2.png) [@Bitking](https://discourse.numenta.org/u/Bitking)\
**Post date:** [May 1, 2019, 11:12pm UTC](https://discourse.numenta.org/t/understanding-htm/5929/2 "2019-05-01T23:12:29Z")

</div>

Welcome to the community.

There is a post pitched just for your first visit:

> [@Read this first](https://discourse.numenta.org/t/read-this-first/384):
>
> Please read this before posting on this forum. Table of Contents [Welcome](#welcome)[What is This Forum?](#what-is-this-forum)[Before Posting](#before-posting)[Getting started](#getting-started)[Forum Preferences](#forum-preferences)[Moderation Policies](#moderation-policies)[Examples of High Quality Posts](#examples-of-high-quality-posts)[Questions or Feedback Regarding this Forum](#questions-or-feedback-regarding-this-forum)Welcome to the HTM community! You may have arrived here after: Reading “[On Intelligence](https://www.amazon.com/Intelligence-Understanding-Creation-Intelligent-Machines-ebook/dp/B003J4VE5Y)” Seeing a presentation by one of the Numenta staff Reading a reference to Numenta in the media In any case, if you are someone who is curious about the human brain, and p…

It will suggest that you watch these videos and I do think that is an excellent place to start.

> **[Numenta](https://www.youtube.com/channel/UC8-ttzWLgXZOGuhUyrPlUuA)**
>
> We produce content here to help educate people about how the brain works and how we can apply neuroscience principles to artificial intelligence and machine learning. We record our research meetings, share event presentations and create video...

---

<div class="post-metadata">

**Author:** ![kashyap](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.numenta.org/kashyap/32/1704_2.png) [@kashyap](https://discourse.numenta.org/u/kashyap)\
**Post date:** [May 2, 2019, 3:32am UTC](https://discourse.numenta.org/t/understanding-htm/5929/3 "2019-05-02T03:32:27Z")

</div>

Thanks for the link. I have watched the first few videos of the series and I still don’t get it ☹ … In fact, I was watching this video and I get thrown off when a single line is drawn from input and single line is used to trace it to different layers - [https://www.youtube.com/watch?v=7tYxK8DZKYU](https://www.youtube.com/watch?v=7tYxK8DZKYU) at 5:09 for example. I would imagine one input line to break out into several lines as they flow through the system.

---

<div class="post-metadata">

**Author:** ![rhyolight](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.numenta.org/rhyolight/32/3922_2.png) [@rhyolight](https://discourse.numenta.org/u/rhyolight)\
**Post date:** [May 2, 2019, 3:46am UTC](https://discourse.numenta.org/t/understanding-htm/5929/4 "2019-05-02T03:46:43Z")

</div>

> [@kashyap](#):
>
> I have watched the first few videos of the series and I still don’t get it

Are you sure you watched the HTM School video series? [https://numenta.org/htm-school/](https://numenta.org/htm-school/)

> [@kashyap](#):
>
> I was watching this video and I get thrown off when a single line is drawn from input and single line is used to trace it to different layers - [https://www.youtube.com/watch?v=7tYxK8DZKYU](https://www.youtube.com/watch?v=7tYxK8DZKYU) at 5:09 for example

You jumped right in the deep end here. If you don’t understand the HTM School series, this is going to be really hard to explain 😅

---

<div class="post-metadata">

**Author:** ![kashyap](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.numenta.org/kashyap/32/1704_2.png) [@kashyap](https://discourse.numenta.org/u/kashyap)\
**Post date:** [May 2, 2019, 12:57pm UTC](https://discourse.numenta.org/t/understanding-htm/5929/5 "2019-05-02T12:57:12Z")

</div>

I’ll give the videos another shot 🙂

---

<div class="post-metadata">

**Author:** ![kashyap](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.numenta.org/kashyap/32/1704_2.png) [@kashyap](https://discourse.numenta.org/u/kashyap)\
**Post date:** [May 7, 2019, 3:09pm UTC](https://discourse.numenta.org/t/understanding-htm/5929/6 "2019-05-07T15:09:23Z")

</div>

Okay, I am watching the SDR videos at HTM school. I would appreciate it very much if someone could help me understand this - how does sensory input get converted to an SDR? Not understanding it seems to inhibit my ability to appreciate the SDR visualizations.

Is the sensory input directly connected to SDR layer? How is sparsity ensured? Could i see a diagram of input signals from an eye (say 10 receptors -\> 10 nerves going into the brain) gets mapped to an SDR?

Regards,  
Kashyap

---

<div class="post-metadata">

**Author:** ![CollinsEM](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.numenta.org/collinsem/32/160_2.png) [@CollinsEM](https://discourse.numenta.org/u/CollinsEM)\
**Post date:** [May 7, 2019, 3:31pm UTC](https://discourse.numenta.org/t/understanding-htm/5929/7 "2019-05-07T15:31:17Z")

</div>

The raw sensor data (whether its scalar floats or pixel colors) is converted to a binary array using an encoder. Depending on how the encoder is implemented, the output could be an SDR suitable for use with HTM algorithms. However a spatial pooler is often applied to the output of the encoder in order to generate SDRs that make more efficient use of the available bit representaions.

---

<div class="post-metadata">

**Author:** ![rhyolight](https://yyz2.discourse-cdn.com/flex030/user_avatar/discourse.numenta.org/rhyolight/32/3922_2.png) [@rhyolight](https://discourse.numenta.org/u/rhyolight)\
**Post date:** [May 7, 2019, 4:28pm UTC](https://discourse.numenta.org/t/understanding-htm/5929/8 "2019-05-07T16:28:20Z")

</div>

> [@kashyap](#):
>
> how does sensory input get converted to an SDR?

> [@CollinsEM](#):
>
> The raw sensor data (whether its scalar floats or pixel colors) is converted to a binary array using an encoder.

The “encoder” is taking the place of the sensory organ in a biological system. The encoders we’ve creating are extremely simple compared to your cochlea and retina. Quick correction: Encoders do not have to produce _sparse_ arrays, but their output must have semantic meaning. Spatial Pooling will extract meaning from sparse or dense input. For example, if someone shines a flashlight in your face, you might receive denser representations (more input activations) into the cortex from the retinas. The cortex (SP) will normalize this to a stable rate of about 2%. These sparse activations still have meaning, and cortical columns use them to build models of reality, or reference frames. The sparsity is super important, because is allows them to store a lot of objects and compare and contrast them efficiently.

> [@kashyap](#):
>
> Is the sensory input directly connected to SDR layer? How is sparsity ensured?

The Spatial Pooling algorithm produces a stable sparsity. You can change this by setting a value in our models. It could produce dense representations, but sparse seems to be crucial to the whole system working. Input to the SP can be direct sensory encodings, but they must be binary arrays. They can also have topology. [The SP can be configured with topology and local inhibition](https://discourse.numenta.org/t/htm-school-episode-10-topology/1676).
