MLP дает неточные результаты

Я попытался построить простой MLP с 2 скрытыми слоями и 3 выходными классами. В модели я сделал следующее:

  • Входные изображения - это изображения размером 120x120 rgb. Уплощенный размер (3 * 120 * 120)

  • 2 скрытых слоя размером 100.

  • Используется активация Relu

  • Выходной слой имеет 3 нейрона

Код

def model(input, weights, biases):
   
    l_1 = tf.add(tf.matmul(x, weights['h1']), biases['b1'])
    l_1 = tf.nn.relu(l_1)

    l_2 = tf.add(tf.matmul(l_1, weights['h2']), biases['b2'])
    l_2 = tf.nn.relu(l_2)

    out = tf.matmul(l_2, weights['out']) + biases['out']
    return out

Оптимизатор

pred = model(input_batch, weights, biases)
cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(pred, y))
optimizer =   tf.train.GradientDescentOptimizer(rate).minimize(cost)

Однако модель не работает. Точность равна только случайной модели. Ниже приводится пример: https://github.com/aymericdamien/TensorFlow-Examples/blob/master/examples/3_NeuralNetworks/multilayer_perceptron.py


person yyy    schedule 15.08.2016    source источник
comment
Сколько тренировочных данных вы используете, как долго вы тренируетесь и каковы были потери после прекращения тренировки?   -  person Dr. Snoopy    schedule 15.08.2016


Ответы (1)


Вы допустили опечатку в def model. Имя первого аргумента - input, а в следующей строке - x.

Еще один прием, который можно использовать, когда вы подозреваете, что модель не обучается, - запускать ее в одном и том же пакете снова и снова. Если реализация верна и модель обучается, она скоро выучит эту партию наизусть, что даст 100% точность. Если это не так, значит, что-то не так в вашей реализации.

person Sergii Gryshkevych    schedule 15.08.2016