Exemplo n.º 1
0
def test_generateMultipleSequence(dataGenerator, numSequences,
                                  minSequenceLength, maxSequenceLength):
    """ Tests Utility.generateMultipleSequence """

    dataSeq = Utility.generateMultipleSequence(dataGenerator, numSequences,
                                               minSequenceLength,
                                               maxSequenceLength)

    assert len(dataSeq) == numSequences

    for seq in dataSeq:
        assert minSequenceLength <= seq.shape[0] <= maxSequenceLength
Exemplo n.º 2
0
def main():
    # The data generator
    dataGenerator = StandardGenerator('long_term')

    # Data for single-sequence methods
    n = 21500
    trainN = 21000
    trainData, testData = Utility.trainTestSplit(
        dataGenerator.generate(n),
        train=trainN
    )

    # Method 1 - train on mutually exclusive sequences
    seqLength = 500
    trainSequences = Utility.breakSeq(trainData, seqLength)
    tryModelOneSeq(trainSequences, testData, 'method1', PLOT_DIR)

    # Method 2 - train on randomly sampled contiguous sequences
    seqLength = 500
    numSeq = 42
    trainSequences = [
        trainData[startIdx: startIdx + seqLength]
        for startIdx in list(np.random.randint(
            0,
            trainN - seqLength,
            size=(numSeq,)
        ))
    ]
    tryModelOneSeq(trainSequences, testData, 'method2', PLOT_DIR)

    # Method 3 - train on the single long sequence
    trainSequences = [trainData]
    tryModelOneSeq(trainSequences, testData, 'method3', PLOT_DIR)

    # Multiple Independent Train Sequences
    seqLength = 500
    numSeq = 42
    trainSequences = Utility.generateMultipleSequence(
        dataGenerator=dataGenerator,
        numSequences=numSeq,
        minSequenceLength=seqLength,
        maxSequenceLength=seqLength
    )
    testData = dataGenerator.generate(seqLength)
    tryModelMultiSeq(trainSequences, testData, 'multiseq', PLOT_DIR)