{"id":20423,"date":"2024-10-21T20:44:55","date_gmt":"2024-10-21T20:44:55","guid":{"rendered":"https:\/\/liquidinstruments.com\/?p=20423"},"modified":"2025-11-14T19:56:37","modified_gmt":"2025-11-14T19:56:37","slug":"creating-a-neural-network","status":"publish","type":"post","link":"https:\/\/liquidinstruments.com\/blog\/creating-a-neural-network\/","title":{"rendered":"Creating a neural network","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>To create a neural network, this step-by-step example uses <a href=\"https:\/\/apis.liquidinstruments.com\/mnn\/examples\/Sum.html\" target=\"_blank\" rel=\"noopener\">sum.ipynb<\/a>, where the expected output is simply the sum of the inputs and uses only one hidden layer. While this simple operation can be completed in many ways, it\u2019s easy to train the <a href=\"https:\/\/liquidinstruments.com\/integrated-instruments\/neural-network\/\" target=\"_blank\" rel=\"noopener\">Moku Neural Network<\/a> to implement almost any function, from simple algebra to complex inference. Find other examples <a href=\"https:\/\/apis.liquidinstruments.com\/mnn\/\" target=\"_blank\" rel=\"noopener\">here<\/a>&nbsp;and download the Neural Network guide <a href=\"https:\/\/liquidinstruments.com\/moku-neural-network-guide\/\">here<\/a>.<\/p>\n<h2>General prerequisites<\/h2>\n<p>To begin using the Moku Neural Network, you will need the following:<\/p>\n<ul>\n<li>A <a href=\"https:\/\/liquidinstruments.com\/products\/hardware-platforms\/mokupro\/\" target=\"_blank\" rel=\"noopener\">Moku:Pro<\/a> device (Moku:Lab and Moku:Go are not currently supported)<\/li>\n<li><a href=\"https:\/\/liquidinstruments.com\/blog\/moku-version-3-3-delivers-capability-and-efficiency-gains-with-integrated-ai\/\" target=\"_blank\" rel=\"noopener\">Moku Version 3.3<\/a>, available for download on Windows or macOS<\/li>\n<li>A Python installation (v3.11); see our Moku Python <a href=\"https:\/\/liquidinstruments.com\/blog\/getting-started-with-the-moku-python-api\/\" target=\"_blank\" rel=\"noopener\">installation guide<\/a> for details. You can also install a navigator such as <a href=\"https:\/\/www.anaconda.com\" target=\"_blank\" rel=\"noopener\">Anaconda<\/a>. Your Python installation must be v3.11 or higher. If you\u2019re unsure what version you have, check your Python version in a command prompt or terminal with Python &#8211;version or python3 &#8211;version.<\/li>\n<\/ul>\n<h2><span style=\"font-weight: 400;\">Python prerequisites<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">After you have installed Python on your machine, run the following command to install the Moku Neural Network API into a command line or terminal window on your computer. This will install the API and pull in all required dependencies:<\/span><\/p>\n<p><code>pip install 'moku[neuralnetwork]'<\/code><\/p>\n<p><span style=\"font-weight: 400;\">This should install the following:&nbsp;<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Moku Neural Network API<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Numpy 1.26.4<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Ipykernel 6.29.5<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Matplotlib 3.9.2<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Tqdm 4.66.5<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Tensorflow 2.16.2<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">SciPy (required for this example, but not in general)&nbsp;<\/span><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">If you use Python regularly, it\u2019s likely that most of these packages are already installed. To verify, open a command prompt or terminal and type <\/span><span style=\"font-weight: 400;\">pip install X<\/span><span style=\"font-weight: 400;\">, where <\/span><i><span style=\"font-weight: 400;\">X <\/span><\/i><span style=\"font-weight: 400;\">is the name of the package you want to install. If the package is already installed, the command will return a message as follows:&nbsp;<\/span><\/p>\n<p><code>(base) jessicapatterson@Jessicas-MacBook-Pro ~ % pip install numpy<br \/>\nRequirement already satisfied: numpy in \/opt\/anaconda3\/lib\/python3.12\/site-packages (1.26.4)<\/code><\/p>\n<p><code><\/code><br \/>\nThe procedure for installing tensorflow can vary depending on whether you want to use your GPU for calculations. For precise instructions on how to install, see <a href=\"https:\/\/www.tensorflow.org\/install\/pip#windows-wsl2_1\" target=\"_blank\" rel=\"noopener\">Tensorflow\u2019s<\/a> documentation, especially if you foresee using a GPU. For now, simply use pip install tensorflow to confirm that it has been installed.<\/p>\n<p><code>(base) jessicapatterson@Jessicas-MacBook-Pro ~ % pip install tensorflow<\/code><\/p>\n<p><span style=\"font-weight: 400;\">Once installed, try calling Tensorflow and creating a tensor, using this command:<\/span><\/p>\n<p><code><\/code><code>(base) jessicapatterson@Jessicas-MacBook-Pro ~ % python -c \"import tensorflow as tf; print(tf.reduce_sum(tf.random.normal([1000, 1000])))\"<\/code><\/p>\n<p>If this command executes with no error, the installation is complete and you can move onto the next step. If it returns the error \u201cThe TensorFlow library was compiled to use AVX instructions, but these aren&#8217;t available on your machine,\u201d then your computer unfortunately cannot run Tensorflow. Please see their documentation for solutions to this issue.<\/p>\n<p><code>(base) jessicapatterson@Jessicas-MacBook-Pro ~ % python -c \"import tensorflow as tf; print(tf.reduce_sum(tf.random.normal([1000, 1000])))\"<br \/>\ntf.Tensor(258.68292, shape=(), dtype=float32)<\/code><\/p>\n<h2>Training a simple neural network<\/h2>\n<p>For our first neural network, we will train a model to generate the weighted sum of the input channels with an optional bias\/offset term. The weights and biases will be determined through artificial training data created in Python. We can then load the parameters onto the Moku Neural Network instrument and validate the model using the <a href=\"https:\/\/liquidinstruments.com\/products\/integrated-instruments\/oscilloscope\/\" target=\"_blank\" rel=\"noopener\">Moku Oscilloscope<\/a> and its built-in Waveform Generator. This example will use a Jupyter notebook for easy, interactive execution of the Python code. However, a simple Python script written and executed from your favorite IDE will also suffice.<\/p>\n<p>Begin by launching Jupyter from the Anaconda window, then upload and open the sum.ipynb Python notebook.<\/p>\n<h3>Step 1: Imports and function definitions<\/h3>\n<p>Start by running the first code block (Figure 1), which will import all necessary dependencies, as well as make a call to the neural network API. If the first block of code executes without error, then all of the pieces are in place and we can proceed to the next step. If an error returns, check the section above to make sure all the prerequisites are installed.<\/p>\n<p><img decoding=\"async\" width=\"529\" height=\"206\" class=\"aligncenter size-full wp-image-20595\" src=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-17-at-1.15.20-PM.png\" alt=\"\" srcset=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-17-at-1.15.20-PM.png 529w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-17-at-1.15.20-PM-300x117.png 300w\" sizes=\"(max-width: 529px) 100vw, 529px\" \/><\/p>\n<p style=\"text-align: center;\">Figure 1: Required imports for sum.ipynb<\/p>\n<p>Next, generate signals for training as shown in Figure 2. We need three input channels and one output channel of simulated data. You can also use your Moku:Pro to generate or capture real-world training data. Verify your training data by plotting our generated input signals alongside the desired, summed output (Figure 3).<\/p>\n<p><img decoding=\"async\" width=\"490\" height=\"438\" class=\"aligncenter size-full wp-image-20596\" src=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-10-at-10.50.31-AM.png\" alt=\"\" srcset=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-10-at-10.50.31-AM.png 490w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-10-at-10.50.31-AM-300x268.png 300w\" sizes=\"(max-width: 490px) 100vw, 490px\" \/><\/p>\n<p style=\"text-align: center;\">Figure 2: Generating simulated training data.<\/p>\n<p><img decoding=\"async\" width=\"567\" height=\"782\" class=\"aligncenter size-full wp-image-20597\" src=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-10-at-10.50.45-AM.png\" alt=\"\" srcset=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-10-at-10.50.45-AM.png 567w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-10-at-10.50.45-AM-218x300.png 218w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-10-at-10.50.45-AM-300x414.png 300w\" sizes=\"(max-width: 567px) 100vw, 567px\" \/><\/p>\n<p style=\"text-align: center;\">Figure 3: Simulated training inputs and desired outputs for training the model.<\/p>\n<p><span style=\"font-weight: 400;\">Next, we must prepare our data for training the model. We first reshape the inputs to a matrix of form (<\/span><i><span style=\"font-weight: 400;\">N,<\/span><\/i><span style=\"font-weight: 400;\">3) and the outputs to form (<\/span><i><span style=\"font-weight: 400;\">N<\/span><\/i><span style=\"font-weight: 400;\">,1) before sending them to the model. This code is shown in Figure 4.<\/span><\/p>\n<p><img decoding=\"async\" width=\"676\" height=\"68\" class=\"aligncenter size-full wp-image-20598\" src=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-10-at-10.52.13-AM.png\" alt=\"\" srcset=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-10-at-10.52.13-AM.png 676w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-10-at-10.52.13-AM-300x30.png 300w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-10-at-10.52.13-AM-600x60.png 600w\" sizes=\"(max-width: 676px) 100vw, 676px\" \/><\/p>\n<p style=\"text-align: center;\">Figure 4: Transposing the data for training.<\/p>\n<p>In this example, our existing data is sufficient for training, but you can choose to generate additional training data or scale the inputs and outputs. If you do choose to apply scaling, you will need to apply the same scaling in the Moku Neural Network at runtime.<\/p>\n<h3>Step 2: Define the model<\/h3>\n<p>We can now build the neural network model. We first create an object, entitled \u201clinn_model,\u201d which represents the Moku Neural Network instrument\u2019s configuration and constraints. Once we have instantiated the model object in Figure 5, we can pass the training data previously generated into the model.<\/p>\n<p><img decoding=\"async\" width=\"489\" height=\"67\" class=\"aligncenter size-full wp-image-20599\" src=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-17-at-1.24.10-PM.png\" alt=\"\" srcset=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-17-at-1.24.10-PM.png 489w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-17-at-1.24.10-PM-300x41.png 300w\" sizes=\"(max-width: 489px) 100vw, 489px\" \/><\/p>\n<p style=\"text-align: center;\">Figure 5: Instantiating the model.<\/p>\n<p>We then define the model by creating an array, where each element in the array corresponds to a layer of the neural network. These elements are tuples, which give the number of neurons and the activation function for that layer. For example, (16, \u2018relu\u2019) indicates a layer of 16 neurons with a ReLU activation function. Other than the input and output layers, the number of neurons and activation function for each layer is up to the user to determine. While the sum.ipynb model uses a single neuron (Figure 7), feel free to comment out that model definition and try some of the additional options. You can have different activation functions and numbers of neurons for each layer.<\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align: center;\"><img decoding=\"async\" class=\"alignnone wp-image-22572 size-full\" src=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2025-02-04-at-3.05.56\u202fPM.png\" alt=\"\" width=\"892\" height=\"221\" srcset=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2025-02-04-at-3.05.56\u202fPM.png 892w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2025-02-04-at-3.05.56\u202fPM-300x74.png 300w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2025-02-04-at-3.05.56\u202fPM-768x190.png 768w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2025-02-04-at-3.05.56\u202fPM-600x149.png 600w\" sizes=\"(max-width: 892px) 100vw, 892px\" \/><\/p>\n<p style=\"text-align: center;\">Figure 6: Constructing the model definition.<\/p>\n<p>Executing this cell will populate the model definition, shown in Figure 7.<\/p>\n<p><img decoding=\"async\" width=\"876\" height=\"425\" class=\"aligncenter size-full wp-image-20601\" src=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-17-at-1.27.05-PM.png\" alt=\"\" srcset=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-17-at-1.27.05-PM.png 876w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-17-at-1.27.05-PM-300x146.png 300w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-17-at-1.27.05-PM-768x373.png 768w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-17-at-1.27.05-PM-600x291.png 600w\" sizes=\"(max-width: 876px) 100vw, 876px\" \/><\/p>\n<p style=\"text-align: center;\">Figure 7: The sum.ipynb model definition.<\/p>\n<p>When you create your own models, you can include up to five dense layers, also known as hidden layers, of up to 100 neurons each. Choose between ReLU, tanh, softsign, linear, and sigmoid activation functions for each layer. The layer outputs are passed through this activation function before moving to the next layer. Without these, the neural network operations would be entirely linear and collapse down to a single operation.<\/p>\n<h3>Step 3: Train the model and view feedback<\/h3>\n<p>Now that we have defined our model, we need to train it so that it will represent our desired mapping. This is as simple as calling the fit_model() function with a few basic arguments. We will allow our model to train for 500 epochs (training steps) and will hold aside 10% of our training data from above for validation. We also set an early stopping configuration to cease training when the loss functions plateau. This approach helps to avoid \u201coverfitting,\u201d where the model becomes very good at predicting training data at the cost of generality. It also has the benefit of speeding up the time to completion.<\/p>\n<p><img decoding=\"async\" width=\"900\" height=\"78\" class=\"aligncenter size-full wp-image-21317\" src=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-31-at-2.45.47-PM.png\" alt=\"\" srcset=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-31-at-2.45.47-PM.png 900w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-31-at-2.45.47-PM-300x26.png 300w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-31-at-2.45.47-PM-768x67.png 768w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-31-at-2.45.47-PM-600x52.png 600w\" sizes=\"(max-width: 900px) 100vw, 900px\" \/><\/p>\n<p><img decoding=\"async\" class=\"aligncenter wp-image-20602 size-full\" src=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-10-at-11.00.54-AM-e1730411171212.png\" alt=\"Training epochs\" width=\"910\" height=\"338\" srcset=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-10-at-11.00.54-AM-e1730411171212.png 910w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-10-at-11.00.54-AM-e1730411171212-300x111.png 300w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-10-at-11.00.54-AM-e1730411171212-768x285.png 768w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-10-at-11.00.54-AM-e1730411171212-600x223.png 600w\" sizes=\"(max-width: 910px) 100vw, 910px\" \/><\/p>\n<p style=\"text-align: center;\">Figure 8: Training the model.<\/p>\n<p>Once training is complete, plot the training loss and validation loss to assess the success of the training. Note that the loss in Figure 9 decreases as training goes on, which is expected.<\/p>\n<p>&nbsp;<\/p>\n<p><img decoding=\"async\" width=\"610\" height=\"571\" class=\"aligncenter size-full wp-image-20604\" src=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-17-at-1.34.11-PM.png\" alt=\"\" srcset=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-17-at-1.34.11-PM.png 610w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-17-at-1.34.11-PM-300x281.png 300w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-17-at-1.34.11-PM-600x562.png 600w\" sizes=\"(max-width: 610px) 100vw, 610px\" \/><\/p>\n<p style=\"text-align: center;\">Figure 9: Plotted loss and validation loss from training.<\/p>\n<p>You can choose to validate your model by plotting the predicted output now that it has been trained, as shown in Figure 10. Note the scale of the second plot showing the very small difference between the predicted and desired outputs.<\/p>\n<p><img decoding=\"async\" width=\"621\" height=\"671\" class=\"aligncenter size-full wp-image-20605\" src=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-17-at-1.34.51-PM.png\" alt=\"\" srcset=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-17-at-1.34.51-PM.png 621w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-17-at-1.34.51-PM-278x300.png 278w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-17-at-1.34.51-PM-300x324.png 300w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-17-at-1.34.51-PM-600x648.png 600w\" sizes=\"(max-width: 621px) 100vw, 621px\" \/><\/p>\n<p style=\"text-align: center;\">Figure 10: Plotted desired and predicted outputs from the model.<\/p>\n<h3>Step 4: Save the parameters<\/h3>\n<p>Now that we have a fully trained model, it\u2019s ready to run on Moku. Save the model to a .linn file for use in the Moku Neural Network (Figure 11).<\/p>\n<p><img decoding=\"async\" width=\"705\" height=\"57\" class=\"aligncenter size-full wp-image-20606\" src=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-17-at-1.35.36-PM.png\" alt=\"\" srcset=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-17-at-1.35.36-PM.png 705w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-17-at-1.35.36-PM-300x24.png 300w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-17-at-1.35.36-PM-600x49.png 600w\" sizes=\"(max-width: 705px) 100vw, 705px\" \/><\/p>\n<p style=\"text-align: center;\">Figure 11: Function to save the network model to a .linn compatible with the Moku Neural Network.<\/p>\n<h2>Deploying and validating the model with Moku<\/h2>\n<p>In <a href=\"https:\/\/liquidinstruments.com\/multi-instrument-mode\/\" target=\"_blank\" rel=\"noopener\">Multi-Instrument Mode<\/a> on Moku:Pro (Figure 12), place a Moku Neural Network in Slot 1 and an Oscilloscope in Slot 2. Next, connect the outputs of the Oscilloscope to the inputs of the Neural Network. Then click \u201capply changes\u201d and wait for the FPGA to configure.<\/p>\n<p><img decoding=\"async\" class=\"aligncenter wp-image-20607 size-full\" src=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-17-at-1.37.17-PM.png\" alt=\"\" width=\"848\" height=\"467\" srcset=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-17-at-1.37.17-PM.png 848w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-17-at-1.37.17-PM-300x165.png 300w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-17-at-1.37.17-PM-768x423.png 768w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-17-at-1.37.17-PM-600x330.png 600w\" sizes=\"(max-width: 848px) 100vw, 848px\" \/><\/p>\n<p style=\"text-align: center;\">Figure 12: Multi-Instrument Mode configuration on Moku:Pro.<\/p>\n<p>Now, open the Neural Network menu and upload the sum.linn file generated by the Python script using the \u201cLoad network configuration\u201d button, located below the diagram as shown in Figure 13. You should see one layer with three inputs, one output, and a linear activation function, as expected.<\/p>\n<p><img decoding=\"async\" width=\"731\" height=\"311\" class=\"aligncenter size-full wp-image-20608\" src=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-17-at-1.37.59-PM.png\" alt=\"Neural network, single neuron and layer\" srcset=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-17-at-1.37.59-PM.png 731w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-17-at-1.37.59-PM-300x128.png 300w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-17-at-1.37.59-PM-600x255.png 600w\" sizes=\"(max-width: 731px) 100vw, 731px\" \/><\/p>\n<p style=\"text-align: center;\">Figure 13: The Moku Neural Network with sum.linn loaded.<\/p>\n<p>Enter the Oscilloscope and open the embedded Waveform Generator by clicking on the sine wave icon in the lower right corner. Generate two signals to test the model\u2019s functionality, shown in Figure 14. For this example, we will use two sine waves: one with a 1 Vpp amplitude and 1 kHz frequency, and one with a 500 mVpp amplitude and 100 Hz frequency.<\/p>\n<p><img decoding=\"async\" width=\"946\" height=\"180\" class=\"aligncenter size-full wp-image-20609\" src=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-17-at-1.38.36-PM.png\" alt=\"\" srcset=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-17-at-1.38.36-PM.png 946w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-17-at-1.38.36-PM-300x57.png 300w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-17-at-1.38.36-PM-768x146.png 768w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-17-at-1.38.36-PM-600x114.png 600w\" sizes=\"(max-width: 946px) 100vw, 946px\" \/><\/p>\n<p style=\"text-align: center;\">Figure 13: Embedded Waveform Generator example settings.<\/p>\n<p>You should see the summed signal appear on Channel A of the Oscilloscope. Scale the Oscilloscope view with your mouse to view the signal. The two sine waves added together should resemble the signal in Figure 15.<\/p>\n<p><img decoding=\"async\" width=\"1436\" height=\"806\" class=\"aligncenter size-full wp-image-20610\" src=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-10-at-10.34.35-AM-1.png\" alt=\"\" srcset=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-10-at-10.34.35-AM-1.png 1436w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-10-at-10.34.35-AM-1-300x168.png 300w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-10-at-10.34.35-AM-1-1024x575.png 1024w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-10-at-10.34.35-AM-1-768x431.png 768w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-10-at-10.34.35-AM-1-600x337.png 600w\" sizes=\"(max-width: 1436px) 100vw, 1436px\" \/><\/p>\n<p style=\"text-align: center;\">Figure 15: Output of the Moku Neural Network.<\/p>\n<p>Verify operation of the network using cursors and built-in measurements as seen in Figure 16, testing for the expected amplitude and frequency components, or use the Moku <a href=\"https:\/\/liquidinstruments.com\/products\/integrated-instruments\/spectrum-analyzer\/\" target=\"_blank\" rel=\"noopener\">Spectrum Analyzer<\/a>. Feel free to test the network with additional signal types, frequencies, or other parameters.<\/p>\n<p><img decoding=\"async\" width=\"1435\" height=\"806\" class=\"aligncenter size-full wp-image-20611\" src=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-10-at-10.34.07-AM.png\" alt=\"\" srcset=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-10-at-10.34.07-AM.png 1435w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-10-at-10.34.07-AM-300x169.png 300w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-10-at-10.34.07-AM-1024x575.png 1024w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-10-at-10.34.07-AM-768x431.png 768w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-10-at-10.34.07-AM-600x337.png 600w\" sizes=\"(max-width: 1435px) 100vw, 1435px\" \/><\/p>\n<p><img decoding=\"async\" width=\"1438\" height=\"718\" class=\"aligncenter size-full wp-image-20612\" src=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-10-at-11.55.02-AM.png\" alt=\"\" srcset=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-10-at-11.55.02-AM.png 1438w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-10-at-11.55.02-AM-300x150.png 300w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-10-at-11.55.02-AM-1024x511.png 1024w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-10-at-11.55.02-AM-768x383.png 768w, https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-10-at-11.55.02-AM-600x300.png 600w\" sizes=\"(max-width: 1438px) 100vw, 1438px\" \/><\/p>\n<p style=\"text-align: center;\">Figure 16: Verifying the Moku Neural Network output.<\/p>\n<h2>Conclusion<\/h2>\n<p>From here, you can modify the provided example scripts or write your own to create unique, powerful machine learning models to integrate with any other Moku instruments. Run control systems in real time, predict experiment outputs, and more, all with the only FPGA-based neural network integrated with a reconfigurable suite of high-performance test and measurement instruments.<\/p>\n<p>Prefer a video tutorial?&nbsp;<a href=\"https:\/\/liquidinstruments.com\/webinar-registration-mastering-moku-introducing-the-moku-neural-network\/\" target=\"_blank\" rel=\"noopener\">Watch our webinar on demand<\/a>. You\u2019ll learn how to implement an FPGA-based neural network for fast, flexible signal analysis, closed-loop feedback, and more.<\/p>\n<h3><b>Learn more about the Moku Neural Network<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Review the rest of the provided examples, review specification, and continue learning about the Moku Neural Network. Have questions? Reach out to us <\/span><a href=\"https:\/\/liquidinstruments.com\/support\/contact-us-general-sales\/\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">here<\/span><\/a><span style=\"font-weight: 400;\">.<\/span><\/p>\n<h3><b>Join our User Forum to stay connected<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Want to request a new feature? Have a support tip to share? From use case examples to new feature announcements and more, the <\/span><a href=\"https:\/\/forum.liquidinstruments.com\/\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">User Forum<\/span><\/a><span style=\"font-weight: 400;\"> is your one-stop shop for product updates, as well as connection to Liquid Instruments and our global user community.<\/span><\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>To create a neural network, this step-by-step example uses sum.ipynb, where the expected output is simply the sum of the inputs and uses only one hidden layer. While this simple operation can be completed in many ways, it\u2019s easy to train the Moku Neural Network to implement almost any function, from simple algebra to complex [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":40,"featured_media":20852,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"content-type":"","footnotes":""},"categories":[3],"tags":[],"class_list":["post-20423","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog","site-category-mokupro","site-category-multi-instrument-mode","site-category-neural-network"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.0 (Yoast SEO v27.0) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Creating a neural network<\/title>\n<meta name=\"description\" content=\"Learn how to use the Moku Neural Network to create a simple network, from downloading prerequisites to testing it on Moku:Pro\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/liquidinstruments.com\/blog\/creating-a-neural-network\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Creating a neural network\" \/>\n<meta property=\"og:description\" content=\"Learn how to use the Moku Neural Network to create a simple network, from downloading prerequisites to testing it on Moku:Pro\" \/>\n<meta property=\"og:url\" content=\"https:\/\/liquidinstruments.com\/blog\/creating-a-neural-network\/\" \/>\n<meta property=\"og:site_name\" content=\"Liquid Instruments\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/LiquidInstruments\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-10-21T20:44:55+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-11-14T19:56:37+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-21-at-9.59.46-AM.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1433\" \/>\n\t<meta property=\"og:image:height\" content=\"864\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"jpatterson\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@liquidinstrmnts\" \/>\n<meta name=\"twitter:site\" content=\"@liquidinstrmnts\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"jpatterson\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"12 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/liquidinstruments.com\/blog\/creating-a-neural-network\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/liquidinstruments.com\/blog\/creating-a-neural-network\/\"},\"author\":{\"name\":\"jpatterson\",\"@id\":\"https:\/\/liquidinstruments.com\/#\/schema\/person\/a90cfa3df7e1cd3895cac4a51dff60b5\"},\"headline\":\"Creating a neural network\",\"datePublished\":\"2024-10-21T20:44:55+00:00\",\"dateModified\":\"2025-11-14T19:56:37+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/liquidinstruments.com\/blog\/creating-a-neural-network\/\"},\"wordCount\":1717,\"publisher\":{\"@id\":\"https:\/\/liquidinstruments.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/liquidinstruments.com\/blog\/creating-a-neural-network\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-21-at-9.59.46-AM.png\",\"articleSection\":[\"Blog\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/liquidinstruments.com\/blog\/creating-a-neural-network\/\",\"url\":\"https:\/\/liquidinstruments.com\/blog\/creating-a-neural-network\/\",\"name\":\"Creating a neural network\",\"isPartOf\":{\"@id\":\"https:\/\/liquidinstruments.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/liquidinstruments.com\/blog\/creating-a-neural-network\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/liquidinstruments.com\/blog\/creating-a-neural-network\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-21-at-9.59.46-AM.png\",\"datePublished\":\"2024-10-21T20:44:55+00:00\",\"dateModified\":\"2025-11-14T19:56:37+00:00\",\"description\":\"Learn how to use the Moku Neural Network to create a simple network, from downloading prerequisites to testing it on Moku:Pro\",\"breadcrumb\":{\"@id\":\"https:\/\/liquidinstruments.com\/blog\/creating-a-neural-network\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/liquidinstruments.com\/blog\/creating-a-neural-network\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/liquidinstruments.com\/blog\/creating-a-neural-network\/#primaryimage\",\"url\":\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-21-at-9.59.46-AM.png\",\"contentUrl\":\"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-21-at-9.59.46-AM.png\",\"width\":1433,\"height\":864,\"caption\":\"AI and Machine learning on the Moku Neural Network\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/liquidinstruments.com\/blog\/creating-a-neural-network\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/liquidinstruments.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Creating a neural network\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/liquidinstruments.com\/#website\",\"url\":\"https:\/\/liquidinstruments.com\/\",\"name\":\"Liquid Instruments\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/liquidinstruments.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/liquidinstruments.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/liquidinstruments.com\/#organization\",\"name\":\"Liquid Instruments\",\"url\":\"https:\/\/liquidinstruments.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/liquidinstruments.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/i0.wp.com\/liquidinstruments.com\/wp-content\/uploads\/2020\/10\/BrandMark-Preferred-RGB-Color.png?fit=1000%2C924&ssl=1\",\"contentUrl\":\"https:\/\/i0.wp.com\/liquidinstruments.com\/wp-content\/uploads\/2020\/10\/BrandMark-Preferred-RGB-Color.png?fit=1000%2C924&ssl=1\",\"width\":1000,\"height\":924,\"caption\":\"Liquid Instruments\"},\"image\":{\"@id\":\"https:\/\/liquidinstruments.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/LiquidInstruments\/\",\"https:\/\/x.com\/liquidinstrmnts\",\"https:\/\/www.instagram.com\/liquidinstruments\/\",\"https:\/\/www.linkedin.com\/company\/liquidinstruments\/\",\"https:\/\/www.youtube.com\/c\/LiquidInstruments\",\"https:\/\/vimeo.com\/liquidinstruments\"],\"hasMerchantReturnPolicy\":{\"@type\":\"MerchantReturnPolicy\",\"merchantReturnLink\":\"https:\/\/liquidinstruments.com\/support\/warranty-repairs-and-service\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/liquidinstruments.com\/#\/schema\/person\/a90cfa3df7e1cd3895cac4a51dff60b5\",\"name\":\"jpatterson\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/liquidinstruments.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/3f4addf937f4e6300e74bf8a6d4d655c30b9302eec44ad3c439471b26ee5139b?s=96&d=wavatar&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/3f4addf937f4e6300e74bf8a6d4d655c30b9302eec44ad3c439471b26ee5139b?s=96&d=wavatar&r=g\",\"caption\":\"jpatterson\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Creating a neural network","description":"Learn how to use the Moku Neural Network to create a simple network, from downloading prerequisites to testing it on Moku:Pro","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/liquidinstruments.com\/blog\/creating-a-neural-network\/","og_locale":"en_US","og_type":"article","og_title":"Creating a neural network","og_description":"Learn how to use the Moku Neural Network to create a simple network, from downloading prerequisites to testing it on Moku:Pro","og_url":"https:\/\/liquidinstruments.com\/blog\/creating-a-neural-network\/","og_site_name":"Liquid Instruments","article_publisher":"https:\/\/www.facebook.com\/LiquidInstruments\/","article_published_time":"2024-10-21T20:44:55+00:00","article_modified_time":"2025-11-14T19:56:37+00:00","og_image":[{"width":1433,"height":864,"url":"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-21-at-9.59.46-AM.png","type":"image\/png"}],"author":"jpatterson","twitter_card":"summary_large_image","twitter_creator":"@liquidinstrmnts","twitter_site":"@liquidinstrmnts","twitter_misc":{"Written by":"jpatterson","Est. reading time":"12 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/liquidinstruments.com\/blog\/creating-a-neural-network\/#article","isPartOf":{"@id":"https:\/\/liquidinstruments.com\/blog\/creating-a-neural-network\/"},"author":{"name":"jpatterson","@id":"https:\/\/liquidinstruments.com\/#\/schema\/person\/a90cfa3df7e1cd3895cac4a51dff60b5"},"headline":"Creating a neural network","datePublished":"2024-10-21T20:44:55+00:00","dateModified":"2025-11-14T19:56:37+00:00","mainEntityOfPage":{"@id":"https:\/\/liquidinstruments.com\/blog\/creating-a-neural-network\/"},"wordCount":1717,"publisher":{"@id":"https:\/\/liquidinstruments.com\/#organization"},"image":{"@id":"https:\/\/liquidinstruments.com\/blog\/creating-a-neural-network\/#primaryimage"},"thumbnailUrl":"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-21-at-9.59.46-AM.png","articleSection":["Blog"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/liquidinstruments.com\/blog\/creating-a-neural-network\/","url":"https:\/\/liquidinstruments.com\/blog\/creating-a-neural-network\/","name":"Creating a neural network","isPartOf":{"@id":"https:\/\/liquidinstruments.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/liquidinstruments.com\/blog\/creating-a-neural-network\/#primaryimage"},"image":{"@id":"https:\/\/liquidinstruments.com\/blog\/creating-a-neural-network\/#primaryimage"},"thumbnailUrl":"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-21-at-9.59.46-AM.png","datePublished":"2024-10-21T20:44:55+00:00","dateModified":"2025-11-14T19:56:37+00:00","description":"Learn how to use the Moku Neural Network to create a simple network, from downloading prerequisites to testing it on Moku:Pro","breadcrumb":{"@id":"https:\/\/liquidinstruments.com\/blog\/creating-a-neural-network\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/liquidinstruments.com\/blog\/creating-a-neural-network\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/liquidinstruments.com\/blog\/creating-a-neural-network\/#primaryimage","url":"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-21-at-9.59.46-AM.png","contentUrl":"https:\/\/liquidinstruments.com\/wp-content\/uploads\/2024\/10\/Screenshot-2024-10-21-at-9.59.46-AM.png","width":1433,"height":864,"caption":"AI and Machine learning on the Moku Neural Network"},{"@type":"BreadcrumbList","@id":"https:\/\/liquidinstruments.com\/blog\/creating-a-neural-network\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/liquidinstruments.com\/"},{"@type":"ListItem","position":2,"name":"Creating a neural network"}]},{"@type":"WebSite","@id":"https:\/\/liquidinstruments.com\/#website","url":"https:\/\/liquidinstruments.com\/","name":"Liquid Instruments","description":"","publisher":{"@id":"https:\/\/liquidinstruments.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/liquidinstruments.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/liquidinstruments.com\/#organization","name":"Liquid Instruments","url":"https:\/\/liquidinstruments.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/liquidinstruments.com\/#\/schema\/logo\/image\/","url":"https:\/\/i0.wp.com\/liquidinstruments.com\/wp-content\/uploads\/2020\/10\/BrandMark-Preferred-RGB-Color.png?fit=1000%2C924&ssl=1","contentUrl":"https:\/\/i0.wp.com\/liquidinstruments.com\/wp-content\/uploads\/2020\/10\/BrandMark-Preferred-RGB-Color.png?fit=1000%2C924&ssl=1","width":1000,"height":924,"caption":"Liquid Instruments"},"image":{"@id":"https:\/\/liquidinstruments.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/LiquidInstruments\/","https:\/\/x.com\/liquidinstrmnts","https:\/\/www.instagram.com\/liquidinstruments\/","https:\/\/www.linkedin.com\/company\/liquidinstruments\/","https:\/\/www.youtube.com\/c\/LiquidInstruments","https:\/\/vimeo.com\/liquidinstruments"],"hasMerchantReturnPolicy":{"@type":"MerchantReturnPolicy","merchantReturnLink":"https:\/\/liquidinstruments.com\/support\/warranty-repairs-and-service\/"}},{"@type":"Person","@id":"https:\/\/liquidinstruments.com\/#\/schema\/person\/a90cfa3df7e1cd3895cac4a51dff60b5","name":"jpatterson","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/liquidinstruments.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/3f4addf937f4e6300e74bf8a6d4d655c30b9302eec44ad3c439471b26ee5139b?s=96&d=wavatar&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/3f4addf937f4e6300e74bf8a6d4d655c30b9302eec44ad3c439471b26ee5139b?s=96&d=wavatar&r=g","caption":"jpatterson"}}]}},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/liquidinstruments.com\/wp-json\/wp\/v2\/posts\/20423","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/liquidinstruments.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/liquidinstruments.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/liquidinstruments.com\/wp-json\/wp\/v2\/users\/40"}],"replies":[{"embeddable":true,"href":"https:\/\/liquidinstruments.com\/wp-json\/wp\/v2\/comments?post=20423"}],"version-history":[{"count":20,"href":"https:\/\/liquidinstruments.com\/wp-json\/wp\/v2\/posts\/20423\/revisions"}],"predecessor-version":[{"id":26503,"href":"https:\/\/liquidinstruments.com\/wp-json\/wp\/v2\/posts\/20423\/revisions\/26503"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/liquidinstruments.com\/wp-json\/wp\/v2\/media\/20852"}],"wp:attachment":[{"href":"https:\/\/liquidinstruments.com\/wp-json\/wp\/v2\/media?parent=20423"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/liquidinstruments.com\/wp-json\/wp\/v2\/categories?post=20423"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/liquidinstruments.com\/wp-json\/wp\/v2\/tags?post=20423"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}