Below is a small toy example implemented with the sym
api.
Is it possible to do something similar with gluon
?
import mxnet as mx
batch_size = 20
channels = 3
pixels_x = 256
pixels_y = 256
images = mx.nd.random.uniform(0, 255, (batch_size, channels, pixels_x, pixels_y))
data_iter = mx.io.NDArrayIter(images)
############ sym API #######################
data = mx.sym.Variable(name='data')
conv_1 = mx.sym.Convolution(data, num_filter=10, kernel=(2,2))
aktv_1 = mx.sym.Activation(conv_1, act_type='relu')
conv_2 = mx.sym.Convolution(data, num_filter=3, kernel=(2,2))
aktv_2 = mx.sym.Activation(conv_2, act_type='relu')
cnct = mx.sym.concat(aktv_1, aktv_2, dim=1)
conv_3 = mx.sym.Convolution(cnct, num_filter=1, kernel=(2,2))
m = mx.mod.Module(conv_3, label_names=[])
m.bind(data_shapes=data_iter.provide_data)
m.init_params(mx.initializer.Uniform(scale=1.0))
yhat = m.predict(data_iter)
print(yhat.shape)
#fig = mx.viz.plot_network(conv_3, save_format='png')
#fig.render('graph.gv', view=False)
############ gluon API #######################
net = mx.gluon.nn.HybridSequential()
with net.name_scope():
c1 = mx.gluon.nn.Conv2D(channels=10, kernel_size=2, activation='relu')
c2 = mx.gluon.nn.Conv2D(channels=3, kernel_size=2, activation='relu')
######################################################################
# how to concatenate c1 and c2?
######################################################################
Cheers
Andre