We would like to build a community for Small Basic programmers of any age who like to code. Everyone from total beginner to guru is welcome. Click here to register and share your programming journey!


Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Creation of SB-Neuron. Ours. Branded.(v2)
#11
Tricky task, I assume all of these (for 2) and any other variants of numbers can be used.  In other words it needs to detect variants not part of the training set and ignore anything that is not a number.  There are 2^35=3.4e10 possible 5*7 images so certainly can't test them all.

   
Reply
#12
(09-23-2024, 04:02 PM)litdev Wrote: Tricky task, I assume all of these (for 2) and any other variants of numbers can be used.  In other words it needs to detect variants not part of the training set and ignore anything that is not a number.  There are 2^35=3.4e10 possible 5*7 images so certainly can't test them all.

This is a useful hint.  Undecided

But it became even more interesting to me.  Shy
Reply
#13
The way I would go about this is to pre-process/categorise the 7x5 pattern first.  For example:

1] Count number of loops
2] Detect ends - how many and which quadrant they are in
3] Maybe others
Reply
#14
(translated by Google translator)

Hi all.  Shy

At the moment, I have a pretty good picture.
Now I want to create a neural network that should recognize only 10 numbers that are written correctly.
When I understand what our SB-Neuron is capable of, then I will try to complicate the task.

At the moment, the design features of Small BASIC's arrays are helping me a lot.
The fact that the Small Basic array does not occupy memory with empty cells provides great memory savings when using SB-Neurons.

In general, the activity is very interesting.
I wish everyone as much pleasure as I now get from my hobby.  Wink

Good luck to everyone!
Reply
#15
To reduce the work load we could directly jump from loop for number who can't came.
Example to make a baddest pixel zero we need atleast 4 matrix filled so any image containing less than 4 then zero will be flagged false for it.
This can be easily done by using flags.
ZS
Reply
#16
(09-25-2024, 10:28 AM)z-s Wrote: To reduce the work load we could directly jump from loop for number who can't came.
Example to make a baddest pixel zero we need atleast 4 matrix filled so any image containing less than 4 then zero will be flagged false for it.
This can be easily done by using flags.

Hello.  Shy

I didn't understand you.
I am creating my presentation now. Will you create your presentation of your idea?
[-] The following 1 user Likes AbsoluteBeginner's post:
  • z-s
Reply
#17
Hi all.  Smile

I have such a cool thing coming out. I'll be publishing my new demo program soon.

See you.  Wink
Reply
#18
My concept explained by chatgpt

### Revised Minimum Filled Cells for Each Digit

Here’s an updated list, considering more flexible representations:

- **0**: Minimum of 4 filled cells (enough to form a recognizable shape, but less ideal)
- **1**: 2 filled cells (as before)
- **2**: 5 filled cells (top, middle, bottom)
- **3**: 5 filled cells (top, middle, bottom)
- **4**: 5 filled cells (both upper corners and middle)
- **5**: 5 filled cells (top, middle, bottom)
- **6**: 5 filled cells (similar to "5," but with a closed loop)
- **7**: 4 filled cells (diagonal plus top)
- **8**: 6 filled cells (full shape, but may accept 5)
- **9**: 5 filled cells (closed loop plus extra segment)

### Implementation Considerations

1. **Flexible Recognition**: Allow for recognition of digits with fewer filled cells, focusing on key characteristics rather than strict adherence to filled cell counts.

2. **Contextual Awareness**: Implement context checks. For example, if a matrix could represent multiple digits due to fewer filled cells, flag it for further review.

3. **Adjust Thresholds**: Use a dynamic approach where the system can learn from examples, adjusting the minimum filled cell requirement based on actual performance.

By incorporating this flexibility, the recognition system can be more robust and handle various representations of digits effectively.
ZS
Reply
#19
(translated by Google translator)

Hi all.  Shy

I just published an intermediate version of a new demo program. RCDS306.000-0

You can find this file in my OneDrive too.
https://1drv.ms/f/s!AnoSlTzMqlL6jNx6H4Qi...w?e=8D73FE

This program creates a small neural network that contains 5 SB-Neurons.
Each neuron receives information about the state of seven points of the digital display matrix.
These seven dots are located vertically across the display matrix. The matrix contains five vertical columns, each containing seven dots.
Thus, our five SB-Neurons receive data from the display matrix, which has a size of 5x7 dots.

When the program starts working, it is set to neural network training mode.
By clicking on the "Run" button, you will start the learning process and you will be able to observe it.
When the network remembers what the numbers look like on the display, you will see a message about this.
Now you can test the neural network by switching the program's operating mode.

While in operation mode, the program displays randomly selected numbers on the display.
Neurons recognize combinations of dots in the display columns and set their outputs to the corresponding values.

At the moment, the neural network does not contain a second layer of SB-Neurons, which should make the final decision.
For fun, I just print the output values of the neurons to the right of the display.
The number that is present at the outputs of all five neurons is the correct answer.

At the moment, the neural network can only recognize images of numbers that it knows.
The neural network cannot yet recognize the unknown.
I print the output values of neurons for people in the program window so that it would be easier to come up with ways to upgrade neurons and neural networks.

Like this.  Smile
[-] The following 1 user Likes AbsoluteBeginner's post:
  • litdev
Reply
#20
Great graphics,

If we we dig a little into your maths we we see that your 'activation function' is a binary sum of pixels for each number with each column, and is completely deterministic.  In other words there is a direct (one to one) relationship between all possible input and your activation function.  To work you have to train (set this relationship) for EVERY number you want to identify, which is not what ANNs usually do.  An ANN is used when it is NOT POSSIBLE to provide the training with EVERY possible input-output relationship, and its effectiveness is determined by how it copes with input it has NOT been trained on.  ANNs are a bit 'fuzzy', they capture trends and patterns more than direct mathematical relationships.

I'm not sure I have explained my reasoning clearly over the last few posts on this, but I think your work is great.  My only suggestion is to maybe read a little on ANNs as well as pursuing your own reasearch, but keep having fun. Smile
[-] The following 1 user Likes litdev's post:
  • z-s
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)