Количество выходов нейронной сети с неизвестной формой меток
Я пытаюсь построить 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})