J4k3117 opened a new issue #12372: AssertionError / mod.forward(Batch(data = 
[mx.nd.array(img)]))
URL: https://github.com/apache/incubator-mxnet/issues/12372
 
 
   ## 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.
   

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


With regards,
Apache Git Services

Reply via email to