## Description
I'm following this guide 
https://aws.amazon.com/de/blogs/machine-learning/building-an-autonomous-vehicle-part-4-using-behavioral-cloning-with-apache-mxnet-for-your-self-driving-car/
 to train a model with the provided trainingsdata and the valid.rec. When I add 
the code from "Evaluation and simulator" part of this guide. Following Error 
occurs.

## Error Message

```
AssertionError                            Traceback (most recent call last)
<ipython-input-7-fabdcf182ee5> in <module>()
     22     img = np.swapaxes(img, 1, 2)
     23     img = img[np.newaxis, :]
---> 24     mod.forward(Batch(data = [mx.nd.array(img)]))
     25     exp = mod.get_outputs()[0].asnumpy()[0]
     26     angle = 180*exp

/usr/local/lib/python2.7/dist-packages/mxnet/module/module.pyc in forward(self, 
data_batch, is_train)
    588             Default is ``None``, which means ``is_train`` takes the 
value of ``self.for_training``.
    589         """
--> 590         assert self.binded and self.params_initialized
    591 
    592         curr_data_shapes = tuple(i.shape for i in self._data_shapes)

AssertionError: 

```

Can somebody help me or has some advice? I'm not really expirenced with mxnet 
and don't know where to go from here now. I had more Problems with the code 
from this Guide and made some changes.

## Code I used

```
import mxnet as mx
import numpy as np

data = mx.symbol.Variable(name="data")

body = mx.sym.Convolution(data=data, num_filter=24,  kernel=(5, 5), 
stride=(2,2)) 
body = mx.sym.Activation(data=body, act_type='relu', name='relu1')
body = mx.symbol.Pooling(data=body, kernel=(2, 2), stride=(2,2), 
pool_type='max')

body = mx.sym.Convolution(data=body, num_filter=32,  kernel=(5, 5), 
stride=(2,2))
body = mx.sym.Activation(data=body, act_type='relu')
body = mx.symbol.Pooling(data=body, kernel=(2, 2), stride=(2,2), 
pool_type='max')

flatten = mx.symbol.Flatten(data=body)

body = mx.symbol.FullyConnected(data=flatten, name='fc0', num_hidden=32)
body = mx.sym.Activation(data=body, act_type='relu', name='relu6')
body = mx.sym.Dropout(data=body, p=0.1)

body = mx.symbol.FullyConnected(data=body, name='fc1', num_hidden=16)
body = mx.sym.Activation(data=body, act_type='relu', name='relu7')

out = mx.symbol.FullyConnected(data=body, name='fc2', num_hidden=1)
out = mx.symbol.LinearRegressionOutput(data=out, name="softmax")

# Get Iterators

def get_iterators(batch_size, data_shape=(3, 120, 160)):
    train = mx.io.ImageRecordIter(
        path_imgrec         = 'train.rec', 
        data_name           = 'data',
        label_name          = 'softmax_label',
        batch_size          = batch_size,
        data_shape          = data_shape,
        shuffle             = True,
        rand_crop           = True,
        rand_mirror         = True)
    val = mx.io.ImageRecordIter(
        path_imgrec         = 'valid.rec',
        data_name           = 'data',
        label_name          = 'softmax_label',
        batch_size          = batch_size,
        data_shape          = data_shape,
        rand_crop           = False,
        rand_mirror         = False)
    return (train, val)

batch_size = 16
train_iter, val_iter = get_iterators(batch_size)

#Training

batch_size = 8
num_cpus = 2
num_epoch = 10
model_prefix = 'my-car2'
checkpoint = mx.callback.do_checkpoint(model_prefix)
mod = mx.mod.Module(out, context=[mx.cpu(i) for i in range(num_cpus)])
mod.fit(train_data=train_iter, 
        eval_data=val_iter, 
        eval_metric='mae', 
        optimizer='adam',
        optimizer_params={'learning_rate': 0.0001},
        num_epoch=num_epoch,
        epoch_end_callback = checkpoint,        
       )

           
import os       
import time
import mxnet as mx
import numpy as np
%matplotlib inline
from PIL import Image
from IPython import display
from collections import namedtuple
import matplotlib.patches as patches
import matplotlib.pyplot as plt

PATH = 'trainingdata/'
all_files = sorted(os.listdir(PATH))
sym, arg_params, aux_params = mx.model.load_checkpoint('my-car2', num_epoch)
mod = mx.mod.Module(symbol=sym) 
fig, ax = plt.subplots(1)
Batch = collections.namedtuple('Batch', ['data'])
for fname in all_files:
    org_img = Image.open(PATH + fname)    
    img = np.array(org_img)
    img = np.swapaxes(img, 0, 2)
    img = np.swapaxes(img, 1, 2) 
    img = img[np.newaxis, :]
    mod.forward(Batch(data = [mx.nd.array(img)]))
    exp = mod.get_outputs()[0].asnumpy()[0]
    angle = 180*exp
    left = 80 * exp + 80
    rect = patches.Rectangle((left, 85),20,30, angle=angle,
                             linewidth=2,edgecolor='r',facecolor='none')
    patch = ax.add_patch(rect)
    display.clear_output(wait=True)
    display.display(plt.gcf())
    plt.imshow(org_img)
    time.sleep(0.1)
    patch.remove()

```

#Package used (Python/R/Scala/Julia):
I'm using:

1. Ubuntu 16.04 in OracleVM
2. Python2.7
3. Jupyter qtconsole
4. Mxnet v1.2.1 with cpu and pip

## Steps to reproduce
1. Downloaded trainingdata and valid.rec in one folder.
2. Created from trainingdata train.lst and train.rec.
```
python im2rec.py /home/summer/summerws/train 
/home/summer/summerws/trainingdata/ --recursive --list --num-thread 8
python im2rec.py /train /home/summer/summerws/trainingdata --recursive 
--pass-through --pack-label --num-thread 8
```
3. Start Jupyter QtConsole from terminal inside of the folder with train.rec, 
valid.rec and trainingdata/
```
jupyter qtconsole
```
4. Copied my code inside the jupyter qtconsole

Thanks in advance for your help.


[ Full content available at: 
https://github.com/apache/incubator-mxnet/issues/12372 ]
This message was relayed via gitbox.apache.org for [email protected]

Reply via email to