Overview of this book

Are you a mobile developer or web developer who wants to create immersive and cool Augmented Reality apps with the latest Google ARCore platform? If so, this book will help you jump right into developing with ARCore and will help you create a step by step AR app easily. This book will teach you how to implement the core features of ARCore starting from the fundamentals of 3D rendering to more advanced concepts such as lighting, shaders, Machine Learning, and others. We’ll begin with the basics of building a project on three platforms: web, Android, and Unity. Next, we’ll go through the ARCore concepts of motion tracking, environmental understanding, and light estimation. For each core concept, you’ll work on a practical project to use and extend the ARCore feature, from learning the basics of 3D rendering and lighting to exploring more advanced concepts. You’ll write custom shaders to light virtual objects in AR, then build a neural network to recognize the environment and explore even grander applications by using ARCore in mixed reality. At the end of the book, you’ll see how to implement motion tracking and environment learning, create animations and sounds, generate virtual characters, and simulate them on your screen.
Title Page
Packt Upsell
Contributors
Preface
Free Chapter
Getting Started
ARCore on Android
ARCore on Unity
ARCore on the Web
Real-World Motion Tracking
Understanding the Environment
Light Estimation
Recognizing the Environment
Blending Light for Architectural Design
Mixing in Mixed Reality
Performance Tips and Troubleshooting
Other Books You May Enjoy
Index

Training a neural network

As you may have already summarized, a neural network is essentially useless until it is trained. Before we get into training, we should talk some more on how a neuron is activated. Open up the `Neuron` class again and take a look at the `CalculateValue` function. This method calculates the output based on its internal set of weights and is described by the following:

Here:

Also, keep the following in mind:

n = total number of neurons connected as inputsI = signaled input to the `Neuron`class

O = calculated output

S = the `sigmoid` function with a graph:

Sigmoid function

Sigmoid Function essentially distributes the weighted sum of values between `0` and `1` based on a curve (function) similar to the one shown in the preceding graph. We do this in order to evenly weigh the outputs of each of the neurons. Likewise, when we look to input data into a network, we also like to normalize the values between `0` and `1`. If we didn't do this, one single neuron or input could bias our entire network...