Количество выходов нейронной сети с неизвестной формой меток

Я пытаюсь построить SGDRegressor с нейронной сетью, где формы меток неизвестны. Я борюсь с количеством выходов последнего слоя. Как я могу выбрать num_outputs так, чтобы формы прогнозов совпадали с формами меток? Мой код выглядит следующим образом:

class SGDRegressor:
def __init__(self, D):
    lr = 0.1

    #reset graph
    tf.reset_default_graph()

    # create inputs, targets, params
    # matmul doesn't like when w is 1-D
    # so we make it 2-D and then flatten the prediction
    g = tf.Graph()
    with g.as_default():
        self.w = tf.Variable(tf.random_normal(shape=(D, 1)), name='w')
        self.X = tf.placeholder(tf.float32, shape=(None, D), name='X')
        self.Y = tf.placeholder(tf.float32, shape=(None,), name='Y')

    #Define number of neurons for each hidden layer
    h1 = 10
    h2 = 20
    h3 = 10

    #From input to 1st hidden layer
    with g.as_default():
        fully_connected1 = tf.contrib.layers.fully_connected(inputs=self.X, num_outputs=h1, activation_fn=tf.nn.relu, scope="Fully_Conn1")

    #From 1st to 3rd hidden layer, through the 2nd
    with g.as_default():
        fully_connected2 = tf.contrib.layers.fully_connected(inputs=fully_connected1, num_outputs=h2, activation_fn=tf.nn.relu, scope="Fully_Conn2")
        fully_connected3 = tf.contrib.layers.fully_connected(inputs=fully_connected2, num_outputs=h3, activation_fn=tf.nn.relu, scope="Fully_Conn3")

    #From 3rd hidden layer to output
    with g.as_default():
        Y_hat = tf.contrib.layers.fully_connected(inputs=fully_connected3, num_outputs=, activation_fn = tf.nn.relu, scope="Out")

    #Cost function
    with g.as_default():
        cost = tf.losses.mean_squared_error(self.Y, Y_hat, self.w)

        # ops we want to call later
        self.train_op = tf.train.GradientDescentOptimizer(lr).minimize(cost)
        self.predict_op = Y_hat

        # start the session and initialize params
        init = tf.global_variables_initializer()
        self.session = tf.InteractiveSession()
        self.session.run(init)

def partial_fit(self, X, Y):
    self.session.run(self.train_op, feed_dict={self.X: X, self.Y: Y})

def predict(self, X):
    return self.session.run(self.predict_op, feed_dict={self.X: X})

0 ответов

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