# Build and Run
## 1. Clone away
```
$ mkdir <ts-project>
$ cd <ts-project>
$ git clone git://git.yoctoproject.org/meta-tensorflow
$ git clone git://git.openembedded.org/meta-openembedded
$ git clone git://git.openembedded.org/openembedded-core oe-core
$ cd oe-core
$ git clone git://git.openembedded.org/bitbake
```

## 2. Prepare build
```
$ . <ts-project>/oe-core/oe-init-build-env <build>

# Build qemux86-64 which runqemu supports kvm.
$ echo 'MACHINE = "qemux86-64"' >> conf/local.conf

$ echo 'IMAGE_INSTALL_append = " tensorflow"' >> conf/local.conf

Edit conf/bblayers.conf to include other layers
BBLAYERS ?= " \ 
    <ts-project>/oe-core/meta \
    <ts-project>/meta-openembedded/meta-python \
    <ts-project>/meta-openembedded/meta-oe \
    <ts-project>/meta-tensorflow \
"
```
## 3. Build image                                                               
                                                       
```                                                                             
                                                       
cd <build>                                                                      
                                                       
$ bitbake core-image-minimal                                                    
                                                       
```

## 4. Start qemu with slrip + kvm + 5GB memory:
```
$ runqemu qemux86-64 core-image-minimal slirp kvm qemuparams="-m 5120"
```

## 5. Verify the install
```
root@qemux86-64:~# python3 -c "import tensorflow as 
tf;print(tf.reduce_sum(tf.random.normal([1000, 1000])))"
tf.Tensor(-3304.6208, shape=(), dtype=float32)

## 6. Run tutorial case
### Refer: https://www.tensorflow.org/tutorials
```
root@qemux86-64:~# cat >code-v2.py <<ENDOF
import tensorflow as tf
mnist = tf.keras.datasets.mnist

(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0

model = tf.keras.models.Sequential([
  tf.keras.layers.Flatten(input_shape=(28, 28)),
  tf.keras.layers.Dense(128, activation='relu'),
  tf.keras.layers.Dropout(0.2),
  tf.keras.layers.Dense(10)
])

predictions = model(x_train[:1]).numpy()
tf.nn.softmax(predictions).numpy()
loss_fn = tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True)
loss_fn(y_train[:1], predictions).numpy()

model.compile(optimizer='adam',
              loss=loss_fn,
              metrics=['accuracy'])
model.fit(x_train, y_train, epochs=5)
model.evaluate(x_test,  y_test, verbose=2)

probability_model = tf.keras.Sequential([
  model,
  tf.keras.layers.Softmax()
])
probability_model(x_test[:5])

ENDOF

root@qemux86-64:~# python3 ./code-v2.py
2020-12-15 08:16:44.171593: I 
tensorflow/compiler/mlir/mlir_graph_optimization_pass.cc:116] None of the MLIR 
optimization passes are enabled (registered 2)
2020-12-15 08:16:44.184464: I 
tensorflow/core/platform/profile_utils/cpu_utils.cc:112] CPU Frequency: 
3099995000 Hz
Epoch 1/5
1875/1875 [==============================] - 14s 7ms/step - loss: 0.4833 - 
accuracy: 0.8595
Epoch 2/5
1875/1875 [==============================] - 13s 7ms/step - loss: 0.1549 - 
accuracy: 0.9558
Epoch 3/5
1875/1875 [==============================] - 13s 7ms/step - loss: 0.1135 - 
accuracy: 0.9651
Epoch 4/5
1875/1875 [==============================] - 13s 7ms/step - loss: 0.0889 - 
accuracy: 0.9729
Epoch 5/5
1875/1875 [==============================] - 13s 7ms/step - loss: 0.0741 - 
accuracy: 0.9777
313/313 - 1s - loss: 0.0757 - accuracy: 0.9757
```
## 7. TensorFlow/TensorFlow Lite C++ Image Recognition Demo                     
                                                       
```                                                                             
                                                       
root@qemux86-64:~# time label_image                                             
                                                       
2020-12-15 08:18:34.853885: I 
tensorflow/core/platform/profile_utils/cpu_utils.cc:112] CPU Frequency: 
3099995000 Hz                    
2020-12-15 08:18:41.565167: I tensorflow/examples/label_image/main.cc:252] 
military uniform (653): 0.834306                            
2020-12-15 08:18:41.567874: I tensorflow/examples/label_image/main.cc:252] 
mortarboard (668): 0.0218696                                
2020-12-15 08:18:41.568936: I tensorflow/examples/label_image/main.cc:252] 
academic gown (401): 0.0103581                              
2020-12-15 08:18:41.569985: I tensorflow/examples/label_image/main.cc:252] 
pickelhaube (716): 0.00800819                               
2020-12-15 08:18:41.571025: I tensorflow/examples/label_image/main.cc:252] 
bulletproof vest (466): 0.00535086                          
                                                                                
                                                       
real    0m7.178s                                                                
                                                       
user    0m6.101s                                                                
                                                       
sys 0m0.893s                                                                    
                                                       
                                                                                
                                                       
root@qemux86-64:~# time label_image.lite                                        
                                                       
INFO: Loaded model /usr/share/label_image/mobilenet_v1_1.0_224_quant.tflite     
                                                       
INFO: resolved reporter
INFO: invoked
INFO: average time: 213.584 ms
INFO: 0.780392: 653 military uniform
INFO: 0.105882: 907 Windsor tie
INFO: 0.0156863: 458 bow tie
INFO: 0.0117647: 466 bulletproof vest
INFO: 0.00784314: 835 suit

real    0m0.233s
user    0m0.216s
sys 0m0.012s
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#51766): https://lists.yoctoproject.org/g/yocto/message/51766
Mute This Topic: https://lists.yoctoproject.org/mt/78999746/21656
Group Owner: yocto+ow...@lists.yoctoproject.org
Unsubscribe: https://lists.yoctoproject.org/g/yocto/unsub 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to