code: def _create_cnn_model():
      model = Sequential()
      model.add(SpatialConvolution(3, 1, 5, 5))
      model.add(View([1 * 220 * 220]))
      model.add(Linear(1 * 220 * 220, 20))
      model.add(LogSoftMax())
      return model
  
file_path: BigDL/python/dllib/test/bigdl/estimator/test_estimator.py
imports: import pytest
  from pyspark.ml import Pipeline
  from bigdl.dllib.estimator import *
  from bigdl.dllib.nn.layer import Sequential, View, Linear, LogSoftMax, SpatialConvolution
  from bigdl.dllib.nn.criterion import ClassNLLCriterion
  from bigdl.dllib.optim.optimizer import *
  from bigdl.dllib.utils.common import EvaluatedResult
  from test.bigdl.test_zoo_utils import ZooTestCase
  from bigdl.dllib.feature.common import FeatureSet
  from bigdl.dllib.nncontext import init_nncontext, init_spark_conf, ZooContext
  from bigdl.dllib.utils.file_utils import Sample
label_desc: Use image node_id 3 for calling the TestEstimator obj's underlying member method code with example usage: obj._create_cnn_model() and returns: model