Правильное использование функции Tensorflow tf.split в SKFlow

В документации по Skflow есть минимальный пример RNN. Входными данными является матрица с формой (4,5). Почему данные вводятся в соответствии со следующей функцией для ввода?:

def input_fn(X):
    return tf.split(1, 5, X)

Эта функция возвращает список из 5 массивов с формой 4,1

[array([[ 2.],
       [ 2.],
       [ 3.],
       [ 2.]], dtype=float32), array([[ 1.],
       [ 2.],
       [ 3.],
       [ 4.]], dtype=float32), array([[ 2.],
       [ 3.],
       [ 1.],
       [ 5.]], dtype=float32), array([[ 2.],
       [ 4.],
       [ 2.],
       [ 4.]], dtype=float32), array([[ 3.],
       [ 5.],
       [ 1.],
       [ 1.]], dtype=f

и какова разница / влияние на RNN между вышеуказанной функцией или определение функции, подобной этой? Поскольку обе функции ввода работают

def input_fn(X):
    return tf.split(1, 1, X)

Который возвращает следующее:

[[[ 1.,  3.,  3.,  2.,  1.],
        [ 2.,  3.,  4.,  5.,  6.]]

Представлено здесь:

testRNN(self):
        random.seed(42)
        import numpy as np
        data = np.array(list([[2, 1, 2, 2, 3],
                              [2, 2, 3, 4, 5],
                              [3, 3, 1, 2, 1],
                              [2, 4, 5, 4, 1]]), dtype=np.float32)
        # labels for classification
        labels = np.array(list([1, 0, 1, 0]), dtype=np.float32)
        # targets for regression
        targets = np.array(list([10, 16, 10, 16]), dtype=np.float32)
        test_data = np.array(list([[1, 3, 3, 2, 1], [2, 3, 4, 5, 6]]))
        def input_fn(X):
            return tf.split(1, 5, X)

        # Classification
        classifier = skflow.TensorFlowRNNClassifier(
            rnn_size=2, cell_type='lstm', n_classes=2, input_op_fn=input_fn)
        classifier.fit(data, labels)
        classifier.weights_
        classifier.bias_
        predictions = classifier.predict(test_data)
        self.assertAllClose(predictions, np.array([1, 0]))

0 ответов

Другие вопросы по тегам