## 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]