コード例 #1
0
def run():
    """ Run classification network(s) on artificial sensor data """
    with open("network_config_template.json", "rb") as jsonFile:
        templateNetworkConfig = json.load(jsonFile)

    networkConfigurations = generateSampleNetworkConfig(
        templateNetworkConfig, NUM_CATEGORIES)

    for networkConfig in networkConfigurations:
        for noiseAmplitude in WHITE_NOISE_AMPLITUDES:
            for signalMean in SIGNAL_MEANS:
                for signalAmplitude in SIGNAL_AMPLITUDES:
                    for signalPeriod in SIGNAL_PERIODS:
                        sensorType = networkConfig["sensorRegionConfig"].get(
                            "regionType")
                        spEnabled = networkConfig["sensorRegionConfig"].get(
                            "regionEnabled")
                        tmEnabled = networkConfig["tmRegionConfig"].get(
                            "regionEnabled")
                        upEnabled = networkConfig["tpRegionConfig"].get(
                            "regionEnabled")
                        classifierType = networkConfig[
                            "classifierRegionConfig"].get("regionType")

                        expParams = (
                            "RUNNING EXPERIMENT WITH PARAMS:\n"
                            " * numRecords=%s\n"
                            " * signalAmplitude=%s\n"
                            " * signalMean=%s\n"
                            " * signalPeriod=%s\n"
                            " * noiseAmplitude=%s\n"
                            " * sensorType=%s\n"
                            " * spEnabled=%s\n"
                            " * tmEnabled=%s\n"
                            " * tpEnabled=%s\n"
                            " * classifierType=%s\n") % (
                                NUM_RECORDS, signalAmplitude, signalMean,
                                signalPeriod, noiseAmplitude,
                                sensorType.split(".")[1], spEnabled, tmEnabled,
                                upEnabled, classifierType.split(".")[1])
                        print expParams

                        inputFile = generateSensorData(
                            DATA_DIR, OUTFILE_NAME, signalMean, signalPeriod,
                            SEQUENCE_LENGTH, NUM_RECORDS, signalAmplitude,
                            NUM_CATEGORIES, noiseAmplitude)

                        dataSource = FileRecordStream(streamID=inputFile)
                        network = configureNetwork(dataSource, networkConfig)
                        partitions = generateNetworkPartitions(
                            networkConfig, NUM_RECORDS)

                        trainNetwork(network, networkConfig, partitions,
                                     NUM_RECORDS)
コード例 #2
0
def run():
  """ Run classification network(s) on artificial sensor data """

  if USE_JSON_CONFIG:
    with open('config/network_configs.json', 'rb') as fr:
      networkConfigurations = json.load(fr)
  else:
    with open("config/network_config_template.json", "rb") as jsonFile:
      templateNetworkConfig = json.load(jsonFile)
      networkConfigurations = generateSampleNetworkConfig(templateNetworkConfig,
                                                          NUM_CATEGORIES)

  headers = ['numRecords', 'seqLength', 'numClasses', 'signalAmplitude',
             'signalMean', 'signalPeriod', 'noiseAmplitude', 'spEnabled',
             'tmEnabled', 'tpEnabled', 'classifierType',
             'classificationAccuracy']

  with open(RESULTS_FILE, 'wb') as fw:
    writer = csv.writer(fw)
    writer.writerow(headers)
    t = PrettyTable(headers)
    for networkConfig in networkConfigurations:
      for noiseAmplitude in WHITE_NOISE_AMPLITUDES:
        for signalMean in SIGNAL_MEANS:
          for signalAmplitude in SIGNAL_AMPLITUDES:
            for signalPeriod in SIGNAL_PERIODS:
              spEnabled = networkConfig["sensorRegionConfig"].get(
                "regionEnabled")
              tmEnabled = networkConfig["tmRegionConfig"].get(
                "regionEnabled")
              upEnabled = networkConfig["tpRegionConfig"].get(
                "regionEnabled")
              classifierType = networkConfig["classifierRegionConfig"].get(
                "regionType")
              inputFile = generateSensorData(DATA_DIR,
                                             OUTFILE_NAME,
                                             signalMean,
                                             signalPeriod,
                                             SEQUENCE_LENGTH,
                                             NUM_RECORDS,
                                             signalAmplitude,
                                             NUM_CATEGORIES,
                                             noiseAmplitude)

              dataSource = FileRecordStream(streamID=inputFile)
              network = configureNetwork(dataSource,
                                         networkConfig)
              partitions = generateNetworkPartitions(networkConfig,
                                                     NUM_RECORDS)

              classificationAccuracy = trainNetwork(network, networkConfig,
                                                    partitions, NUM_RECORDS,
                                                    VERBOSITY)

              results = [NUM_RECORDS,
                         SEQUENCE_LENGTH,
                         NUM_CATEGORIES,
                         signalAmplitude,
                         signalMean,
                         signalPeriod,
                         noiseAmplitude,
                         spEnabled,
                         tmEnabled,
                         upEnabled,
                         classifierType.split(".")[1],
                         classificationAccuracy]

              writer.writerow(results)
              t.add_row(results)
              
  print '%s\n' % t
  print '==> Results saved to %s\n' % RESULTS_FILE
コード例 #3
0
def run():
    """ Run classification network(s) on artificial sensor data """

    if USE_JSON_CONFIG:
        with open('config/network_configs.json', 'rb') as fr:
            networkConfigurations = json.load(fr)
    else:
        with open("config/network_config_template.json", "rb") as jsonFile:
            templateNetworkConfig = json.load(jsonFile)
            networkConfigurations = generateSampleNetworkConfig(
                templateNetworkConfig, NUM_CATEGORIES)

    headers = [
        'numRecords', 'seqLength', 'numClasses', 'signalAmplitude',
        'signalMean', 'signalPeriod', 'noiseAmplitude', 'spEnabled',
        'tmEnabled', 'tpEnabled', 'classifierType', 'classificationAccuracy'
    ]

    with open(RESULTS_FILE, 'wb') as fw:
        writer = csv.writer(fw)
        writer.writerow(headers)
        t = PrettyTable(headers)
        for networkConfig in networkConfigurations:
            for noiseAmplitude in WHITE_NOISE_AMPLITUDES:
                for signalMean in SIGNAL_MEANS:
                    for signalAmplitude in SIGNAL_AMPLITUDES:
                        for signalPeriod in SIGNAL_PERIODS:
                            spEnabled = networkConfig[
                                "sensorRegionConfig"].get("regionEnabled")
                            tmEnabled = networkConfig["tmRegionConfig"].get(
                                "regionEnabled")
                            upEnabled = networkConfig["tpRegionConfig"].get(
                                "regionEnabled")
                            classifierType = networkConfig[
                                "classifierRegionConfig"].get("regionType")
                            inputFile = generateSensorData(
                                DATA_DIR, OUTFILE_NAME, signalMean,
                                signalPeriod, SEQUENCE_LENGTH, NUM_RECORDS,
                                signalAmplitude, NUM_CATEGORIES,
                                noiseAmplitude)

                            dataSource = FileRecordStream(streamID=inputFile)
                            network = configureNetwork(dataSource,
                                                       networkConfig)
                            partitions = generateNetworkPartitions(
                                networkConfig, NUM_RECORDS)

                            classificationAccuracy = trainNetwork(
                                network, networkConfig, partitions,
                                NUM_RECORDS, VERBOSITY)

                            results = [
                                NUM_RECORDS, SEQUENCE_LENGTH, NUM_CATEGORIES,
                                signalAmplitude, signalMean, signalPeriod,
                                noiseAmplitude, spEnabled, tmEnabled,
                                upEnabled,
                                classifierType.split(".")[1],
                                classificationAccuracy
                            ]

                            writer.writerow(results)
                            t.add_row(results)

    print '%s\n' % t
    print '==> Results saved to %s\n' % RESULTS_FILE
コード例 #4
0
  def testClassificationAccuracy(self):
    """Test classification accuracy for sensor data."""

    networkConfigurations = generateSampleNetworkConfig(
      self.templateNetworkConfig, NUM_CATEGORIES)

    for networkConfig in networkConfigurations:
      for noiseAmplitude in WHITE_NOISE_AMPLITUDES:
        for signalMean in SIGNAL_MEANS:
          for signalAmplitude in SIGNAL_AMPLITUDES:
            for signalPeriod in SIGNAL_PERIODS:
              sensorType = networkConfig["sensorRegionConfig"].get(
                "regionType")
              spEnabled = networkConfig["sensorRegionConfig"].get(
                "regionEnabled")
              tmEnabled = networkConfig["tmRegionConfig"].get(
                "regionEnabled")
              upEnabled = networkConfig["tpRegionConfig"].get(
                "regionEnabled")
              classifierType = networkConfig["classifierRegionConfig"].get(
                "regionType")

              expParams = ("RUNNING EXPERIMENT WITH PARAMS:\n"
                           " * numRecords=%s\n"
                           " * signalAmplitude=%s\n"
                           " * signalMean=%s\n"
                           " * signalPeriod=%s\n"
                           " * noiseAmplitude=%s\n"
                           " * sensorType=%s\n"
                           " * spEnabled=%s\n"
                           " * tmEnabled=%s\n"
                           " * tpEnabled=%s\n"
                           " * classifierType=%s\n"
                           ) % (NUM_RECORDS,
                                signalAmplitude,
                                signalMean,
                                signalPeriod,
                                noiseAmplitude,
                                sensorType.split(".")[1],
                                spEnabled,
                                tmEnabled,
                                upEnabled,
                                classifierType.split(".")[1])
              print expParams

              inputFile = generateSensorData(DATA_DIR,
                                             OUTFILE_NAME,
                                             signalMean,
                                             signalPeriod,
                                             SEQUENCE_LENGTH,
                                             NUM_RECORDS,
                                             signalAmplitude,
                                             NUM_CATEGORIES,
                                             noiseAmplitude)

              dataSource = FileRecordStream(streamID=inputFile)
              network = configureNetwork(dataSource,
                                         networkConfig)
              partitions = generateNetworkPartitions(networkConfig,
                                                     NUM_RECORDS)

              classificationAccuracy = trainNetwork(network, networkConfig,
                                                  partitions, NUM_RECORDS)

              if (noiseAmplitude == 0
                  and signalMean == 1.0
                  and signalAmplitude == 1.0
                  and signalPeriod == 20.0
                  and classifierType == KNN_CLASSIFIER_TYPE
                  and spEnabled
                  and tmEnabled
                  and not upEnabled):
                self.assertEqual(classificationAccuracy, 100.00)
              elif (noiseAmplitude == 0
                    and signalMean == 1.0
                    and signalAmplitude == 1.0
                    and signalPeriod == 20.0
                    and classifierType == CLA_CLASSIFIER_TYPE
                    and spEnabled
                    and tmEnabled
                    and not upEnabled):
                self.assertEqual(classificationAccuracy, 100.00)
              elif (noiseAmplitude == 0
                    and signalMean == 1.0
                    and signalAmplitude == 1.0
                    and signalPeriod == 20.0
                    and classifierType == CLA_CLASSIFIER_TYPE
                    and spEnabled
                    and not tmEnabled
                    and not upEnabled):
                self.assertEqual(classificationAccuracy, 100.00)
              elif (noiseAmplitude == 1.0
                    and signalMean == 1.0
                    and signalAmplitude == 1.0
                    and signalPeriod == 20.0
                    and classifierType == CLA_CLASSIFIER_TYPE
                    and spEnabled
                    and tmEnabled
                    and not upEnabled):
                # using AlmostEqual until the random bug issue is fixed
                self.assertAlmostEqual(classificationAccuracy, 80, delta=5)
              elif (noiseAmplitude == 1.0
                    and signalMean == 1.0
                    and signalAmplitude == 1.0
                    and signalPeriod == 20.0
                    and classifierType == CLA_CLASSIFIER_TYPE
                    and spEnabled
                    and not tmEnabled
                    and not upEnabled):
                # using AlmostEqual until the random bug issue is fixed
                self.assertAlmostEqual(classificationAccuracy, 81, delta=5)
コード例 #5
0
  def testClassificationAccuracy(self):
    """Test classification accuracy for sensor data."""

    networkConfigurations = generateSampleNetworkConfig(
      self.templateNetworkConfig, NUM_CATEGORIES)

    for networkConfig in networkConfigurations:
      for noiseAmplitude in WHITE_NOISE_AMPLITUDES:
        for signalMean in SIGNAL_MEANS:
          for signalAmplitude in SIGNAL_AMPLITUDES:
            for signalPeriod in SIGNAL_PERIODS:
              sensorType = networkConfig["sensorRegionConfig"].get(
                "regionType")
              spEnabled = networkConfig["sensorRegionConfig"].get(
                "regionEnabled")
              tmEnabled = networkConfig["tmRegionConfig"].get(
                "regionEnabled")
              upEnabled = networkConfig["tpRegionConfig"].get(
                "regionEnabled")
              classifierType = networkConfig["classifierRegionConfig"].get(
                "regionType")

              expParams = ("RUNNING EXPERIMENT WITH PARAMS:\n"
                           " * numRecords=%s\n"
                           " * signalAmplitude=%s\n"
                           " * signalMean=%s\n"
                           " * signalPeriod=%s\n"
                           " * noiseAmplitude=%s\n"
                           " * sensorType=%s\n"
                           " * spEnabled=%s\n"
                           " * tmEnabled=%s\n"
                           " * tpEnabled=%s\n"
                           " * classifierType=%s\n"
                           ) % (NUM_RECORDS,
                                signalAmplitude,
                                signalMean,
                                signalPeriod,
                                noiseAmplitude,
                                sensorType.split(".")[1],
                                spEnabled,
                                tmEnabled,
                                upEnabled,
                                classifierType.split(".")[1])
              print expParams

              inputFile = generateSensorData(DATA_DIR,
                                             OUTFILE_NAME,
                                             signalMean,
                                             signalPeriod,
                                             SEQUENCE_LENGTH,
                                             NUM_RECORDS,
                                             signalAmplitude,
                                             NUM_CATEGORIES,
                                             noiseAmplitude)
              
              inputFile="mu/right_test.csv"

              classifier = HTMClassifier(networkConfig, inputFile, CATEGORIES)
              minval, maxval = classifier.initialize()
              points = []
              
              classifier2 = HTMClassifier(networkConfig, inputFile, CATEGORIES)
              classifier2.initialize()
              net = classifier.network
              sensorRegion = net.regions["sensor"]
              classifierRegion = net.regions["classifier"]
              with open(inputFile, 'rb') as csvfile:
                reader = csv.reader(csvfile)
                reader.next()
                reader.next()
                reader.next()

                numCorrect = 0
                numCorrect2 = 0
                numRecords = 0

                for row in reader:
                  timestamp = row[0]
                  inputData = float(row[1])
                  points.append(inputData)
                  target = int(row[2])
                  result = classifier.start(inputData, target,
                                            learning_is_on=False)
                  sensorRegion.setParameter("useDataSource", True)
                  net.run(1)
                  result2 = CATEGORIES[int(_getClassifierInference(
                    classifierRegion))]

                  if result2 != result:
                    print "numRecords = %s" % numRecords
                    print "target = %s" % target
                    print "result = %s" % result
                    print "result2 = %s" % result2
                  if int(result) == int(target):
                    if numRecords > START_TEST:
                      numCorrect += 1
                  if int(result2) == int(target):
                    if numRecords > START_TEST:
                      numCorrect2 += 1

                  numRecords += 1

              classificationAccuracy = round(100.0 * numCorrect / (
                numRecords - START_TEST), 2)
              classificationAccuracy2 = round(100.0 *
                                              numCorrect / (
                                                numRecords - START_TEST), 2)
              print classificationAccuracy
              print classificationAccuracy2
              
              import numpy as np
              bins = np.linspace(0, 1, 10)
              histogram = np.histogram(np.array(points), bins)

              if (noiseAmplitude == 0
                  and signalMean == 1.0
                  and signalAmplitude == 1.0
                  and signalPeriod == 20.0
                  and classifierType == KNN_CLASSIFIER_TYPE
                  and spEnabled
                  and tmEnabled
                  and not upEnabled):
                self.assertEqual(classificationAccuracy, 100.00)
              elif (noiseAmplitude == 0
                    and signalMean == 1.0
                    and signalAmplitude == 1.0
                    and signalPeriod == 20.0
                    and classifierType == CLA_CLASSIFIER_TYPE
                    and spEnabled
                    and tmEnabled
                    and not upEnabled):
                self.assertEqual(classificationAccuracy, 100.00)
              elif (noiseAmplitude == 0
                    and signalMean == 1.0
                    and signalAmplitude == 1.0
                    and signalPeriod == 20.0
                    and classifierType == CLA_CLASSIFIER_TYPE
                    and spEnabled
                    and not tmEnabled
                    and not upEnabled):
                self.assertEqual(classificationAccuracy, 100.00)
              elif (noiseAmplitude == 1.0
                    and signalMean == 1.0
                    and signalAmplitude == 1.0
                    and signalPeriod == 20.0
                    and classifierType == CLA_CLASSIFIER_TYPE
                    and spEnabled
                    and tmEnabled
                    and not upEnabled):
                # using AlmostEqual until the random bug issue is fixed
                self.assertAlmostEqual(classificationAccuracy, 80, delta=5)
              elif (noiseAmplitude == 1.0
                    and signalMean == 1.0
                    and signalAmplitude == 1.0
                    and signalPeriod == 20.0
                    and classifierType == CLA_CLASSIFIER_TYPE
                    and spEnabled
                    and not tmEnabled
                    and not upEnabled):
                # using AlmostEqual until the random bug issue is fixed
                self.assertAlmostEqual(classificationAccuracy, 81, delta=5)
コード例 #6
0
    def testClassificationAccuracy(self):
        """Test classification accuracy for sensor data."""

        networkConfigurations = generateSampleNetworkConfig(
            self.templateNetworkConfig, NUM_CATEGORIES)

        for networkConfig in networkConfigurations:
            for noiseAmplitude in WHITE_NOISE_AMPLITUDES:
                for signalMean in SIGNAL_MEANS:
                    for signalAmplitude in SIGNAL_AMPLITUDES:
                        for signalPeriod in SIGNAL_PERIODS:
                            sensorType = networkConfig[
                                "sensorRegionConfig"].get("regionType")
                            spEnabled = networkConfig[
                                "sensorRegionConfig"].get("regionEnabled")
                            tmEnabled = networkConfig["tmRegionConfig"].get(
                                "regionEnabled")
                            upEnabled = networkConfig["tpRegionConfig"].get(
                                "regionEnabled")
                            classifierType = networkConfig[
                                "classifierRegionConfig"].get("regionType")

                            expParams = ("RUNNING EXPERIMENT WITH PARAMS:\n"
                                         " * numRecords=%s\n"
                                         " * signalAmplitude=%s\n"
                                         " * signalMean=%s\n"
                                         " * signalPeriod=%s\n"
                                         " * noiseAmplitude=%s\n"
                                         " * sensorType=%s\n"
                                         " * spEnabled=%s\n"
                                         " * tmEnabled=%s\n"
                                         " * tpEnabled=%s\n"
                                         " * classifierType=%s\n") % (
                                             NUM_RECORDS, signalAmplitude,
                                             signalMean, signalPeriod,
                                             noiseAmplitude,
                                             sensorType.split(".")[1],
                                             spEnabled, tmEnabled, upEnabled,
                                             classifierType.split(".")[1])
                            print expParams

                            inputFile = generateSensorData(
                                DATA_DIR, OUTFILE_NAME, signalMean,
                                signalPeriod, SEQUENCE_LENGTH, NUM_RECORDS,
                                signalAmplitude, NUM_CATEGORIES,
                                noiseAmplitude)

                            dataSource = FileRecordStream(streamID=inputFile)
                            network = createAndConfigureNetwork(
                                dataSource, networkConfig)
                            partitions = generateNetworkPartitions(
                                networkConfig, NUM_RECORDS)

                            classificationAccuracy = trainNetwork(
                                network, networkConfig, partitions,
                                NUM_RECORDS)

                            if (noiseAmplitude == 0 and signalMean == 1.0
                                    and signalAmplitude == 1.0
                                    and signalPeriod == 20.0
                                    and classifierType == KNN_CLASSIFIER_TYPE
                                    and spEnabled and tmEnabled
                                    and not upEnabled):
                                self.assertEqual(classificationAccuracy,
                                                 100.00)
                            elif (noiseAmplitude == 0 and signalMean == 1.0
                                  and signalAmplitude == 1.0
                                  and signalPeriod == 20.0
                                  and classifierType == CLA_CLASSIFIER_TYPE
                                  and spEnabled and tmEnabled
                                  and not upEnabled):
                                self.assertEqual(classificationAccuracy,
                                                 100.00)
                            elif (noiseAmplitude == 0 and signalMean == 1.0
                                  and signalAmplitude == 1.0
                                  and signalPeriod == 20.0
                                  and classifierType == CLA_CLASSIFIER_TYPE
                                  and spEnabled and not tmEnabled
                                  and not upEnabled):
                                self.assertEqual(classificationAccuracy,
                                                 100.00)
                            elif (noiseAmplitude == 1.0 and signalMean == 1.0
                                  and signalAmplitude == 1.0
                                  and signalPeriod == 20.0
                                  and classifierType == CLA_CLASSIFIER_TYPE
                                  and spEnabled and tmEnabled
                                  and not upEnabled):
                                # using AlmostEqual until the random bug issue is fixed
                                self.assertAlmostEqual(classificationAccuracy,
                                                       80,
                                                       delta=5)
                            elif (noiseAmplitude == 1.0 and signalMean == 1.0
                                  and signalAmplitude == 1.0
                                  and signalPeriod == 20.0
                                  and classifierType == CLA_CLASSIFIER_TYPE
                                  and spEnabled and not tmEnabled
                                  and not upEnabled):
                                # using AlmostEqual until the random bug issue is fixed
                                self.assertAlmostEqual(classificationAccuracy,
                                                       81,
                                                       delta=5)
コード例 #7
0
def run():
  """ Run classification network(s) on artificial sensor data """

  if USE_CONFIG_TEMPLATE:
    with open("config/network_config_template.json", "rb") as jsonFile:
      templateNetworkConfig = simplejson.load(jsonFile)
      networkConfigurations = generateSampleNetworkConfig(templateNetworkConfig,
                                                          NUM_CATEGORIES)
  else:
    with open('config/sdr_network_configs.json', 'rb') as fr:
      networkConfigurations = simplejson.load(fr)

  expSetups = []
  classificationResults = []
  for signalType in SIGNAL_TYPES:
    for networkConfig in networkConfigurations:
      for noiseAmplitude in WHITE_NOISE_AMPLITUDES:
        for signalMean in SIGNAL_MEANS:
          for signalAmplitude in SIGNAL_AMPLITUDES:
            for numCategories in NUM_CATEGORIES:
              for numReps in NUM_REPS:
                for numPhases in NUM_PHASES:
                  for noiseLengths in NOISE_LENGTHS:
                    spEnabled = networkConfig["sensorRegionConfig"].get(
                      "regionEnabled")
                    tmEnabled = networkConfig["tmRegionConfig"].get(
                      "regionEnabled")
                    upEnabled = networkConfig["tpRegionConfig"].get(
                      "regionEnabled")
                    classifierType = networkConfig[
                      "classifierRegionConfig"].get(
                      "regionType")

                    expSetup = generateSensorData(signalType,
                                                  DATA_DIR,
                                                  numPhases,
                                                  numReps,
                                                  signalMean,
                                                  signalAmplitude,
                                                  numCategories,
                                                  noiseAmplitude,
                                                  noiseLengths)
                    expSetup['expId'] = len(expSetups)
                    expSetups.append(expSetup)
                    dataSource = FileRecordStream(
                      streamID=expSetup['inputFilePath'])
                    network = configureNetwork(dataSource,
                                               networkConfig)

                    partitions = generateNetworkPartitions(networkConfig,
                                                           expSetup[
                                                             'numPoints'])

                    traces = trainNetwork(network,
                                          networkConfig,
                                          partitions,
                                          expSetup['numPoints'],
                                          VERBOSITY)

                    expId = "%s_sp-%s_tm-%s_tp-%s_%s" % (signalType,
                                                      spEnabled,
                                                      tmEnabled,
                                                      upEnabled,
                                                      classifierType[3:-6])
                    fileName = TRACES_FILE % expId
                    saveTraces(traces, fileName)
                    print '==> Results saved to %s\n' % fileName

                    finalAccuracy = traces['testClassificationAccuracyTrace'][
                      -1]
                    classificationResults.append({
                      'spEnabled': spEnabled,
                      'tmEnabled': tmEnabled,
                      'upEnabled': upEnabled,
                      'classifierType': classifierType.split(".")[1],
                      'classificationAccuracy': finalAccuracy
                    })

  print_and_save_results(classificationResults, expSetups)
コード例 #8
0
def run():
  """ Run classification network(s) on artificial sensor data """
  with open("network_config_template.json", "rb") as jsonFile:
    templateNetworkConfig = json.load(jsonFile)

  networkConfigurations = generateSampleNetworkConfig(templateNetworkConfig, 
                                                      NUM_CATEGORIES)

  for networkConfig in networkConfigurations:
    for noiseAmplitude in WHITE_NOISE_AMPLITUDES:
      for signalMean in SIGNAL_MEANS:
        for signalAmplitude in SIGNAL_AMPLITUDES:
          for signalPeriod in SIGNAL_PERIODS:
            sensorType = networkConfig["sensorRegionConfig"].get(
              "regionType")
            spEnabled = networkConfig["sensorRegionConfig"].get(
              "regionEnabled")
            tmEnabled = networkConfig["tmRegionConfig"].get(
              "regionEnabled")
            upEnabled = networkConfig["tpRegionConfig"].get(
              "regionEnabled")
            classifierType = networkConfig["classifierRegionConfig"].get(
              "regionType")

            expParams = ("RUNNING EXPERIMENT WITH PARAMS:\n"
                         " * numRecords=%s\n"
                         " * signalAmplitude=%s\n"
                         " * signalMean=%s\n"
                         " * signalPeriod=%s\n"
                         " * noiseAmplitude=%s\n"
                         " * sensorType=%s\n"
                         " * spEnabled=%s\n"
                         " * tmEnabled=%s\n"
                         " * tpEnabled=%s\n"
                         " * classifierType=%s\n"
                         ) % (NUM_RECORDS,
                              signalAmplitude,
                              signalMean,
                              signalPeriod,
                              noiseAmplitude,
                              sensorType.split(".")[1],
                              spEnabled,
                              tmEnabled,
                              upEnabled,
                              classifierType.split(".")[1])
            print expParams

            inputFile = generateSensorData(DATA_DIR,
                                           OUTFILE_NAME,
                                           signalMean,
                                           signalPeriod,
                                           SEQUENCE_LENGTH,
                                           NUM_RECORDS,
                                           signalAmplitude,
                                           NUM_CATEGORIES,
                                           noiseAmplitude)

            dataSource = FileRecordStream(streamID=inputFile)
            network = configureNetwork(dataSource,
                                       networkConfig)
            partitions = generateNetworkPartitions(networkConfig,
                                                   NUM_RECORDS)

            trainNetwork(network, networkConfig, partitions, NUM_RECORDS)
コード例 #9
0
def run():
  """ Run classification network(s) on artificial sensor data """

  if USE_JSON_CONFIG:
    with open('config/network_configs.json', 'rb') as fr:
      networkConfigurations = json.load(fr)
  else:
    with open("config/network_config_template.json", "rb") as jsonFile:
      templateNetworkConfig = json.load(jsonFile)
      networkConfigurations = generateSampleNetworkConfig(templateNetworkConfig,
                                                          NUM_CATEGORIES)

  expSetups = []
  classificationResults = []
  for signalType in SIGNAL_TYPES:
    for networkConfig in networkConfigurations:
      for noiseAmplitude in WHITE_NOISE_AMPLITUDES:
        for signalMean in SIGNAL_MEANS:
          for signalAmplitude in SIGNAL_AMPLITUDES:
            for numCategories in NUM_CATEGORIES:
              for numReps in NUM_REPS:
                for numPhases in NUM_PHASES:
                  spEnabled = networkConfig["sensorRegionConfig"].get(
                    "regionEnabled")
                  tmEnabled = networkConfig["tmRegionConfig"].get(
                    "regionEnabled")
                  upEnabled = networkConfig["tpRegionConfig"].get(
                    "regionEnabled")
                  classifierType = networkConfig["classifierRegionConfig"].get(
                    "regionType")
      
                  expSetup = generateSensorData(signalType,
                                                DATA_DIR,
                                                numPhases,
                                                numReps,
                                                signalMean,
                                                signalAmplitude,
                                                numCategories,
                                                noiseAmplitude)
                  expSetup['expId'] = len(expSetups)
                  expSetups.append(expSetup)
                  dataSource = FileRecordStream(streamID=expSetup['filePath'])
                  network = configureNetwork(dataSource,
                                             networkConfig)
      
                  partitions = generateNetworkPartitions(networkConfig,
                                                         expSetup['numPoints'])
      
                  classificationAccuracy = trainNetwork(network,
                                                        networkConfig,
                                                        partitions,
                                                        expSetup['numPoints'],
                                                        VERBOSITY)
      
                  classificationResults.append(
                    {
                      'spEnabled': spEnabled,
                      'tmEnabled': tmEnabled,
                      'upEnabled': upEnabled,
                      'classifierType':
                        classifierType.split(".")[1],
                      'classificationAccuracy':
                        classificationAccuracy
                    })

  print_and_save_results(classificationResults, expSetups)