логиты и метки должны быть транслируемыми с ошибками в Tensorflow RNN

1

Я новичок в Tensorflow и глубокой склонности. Я пытаюсь понять, как убыток уменьшается в течение 10 эпох в моей модели RNN, которую я создал, чтобы прочитать набор данных из kaggle, который содержит данные мошенничества с кредитными картами. Я пытаюсь классифицировать транзакции как мошенничество (1), а не мошенничество (0). Когда я пытаюсь запустить код ниже, я продолжаю получать следующую ошибку:

2018-07-30 14: 59: 33.237749: W tensorflow/core/kernels/queue_base.cc: 277] _1_shuffle_batch/random_shuffle_queue: пропустить отмененную попытку в очереди с закрытой очередью. Traceback (последний последний вызов):
Файл "/home/suleka/anaconda3/lib/python3.6/site-packages/tensorflow/python/client/session.py", строка 1322, в _do_call return fn (* args) Файл "/home/suleka/anaconda3/lib/python3.6/site-packages/tensorflow/python/client/session.py ", строка 1307, в параметрах _run_fn, feed_dict, fetch_list, target_list, run_metadata) Файл"/home/suleka/anaconda3/lib/python3.6/site-packages/tensorflow/python/client/session.py ", строка 1409, в _call_tf_sessionrun run_metadata) tensorflow.python.framework.errors_impl.InvalidArgumentError: логики и метки должны быть широковещательными: logits_size = [1,2] labels_size = [ 1,24] [[Узел: softmax_cross_entropy_with_logits_sg = SoftmaxCrossEntropyWithLogits [T = DT_FLOAT, _device = "/job: localhost/replica: 0/task: 0/device: CPU: 0"] (add, softmax_cross_entropy_with_logits_sg/Reshape_1)]]

Во время обработки вышеуказанного исключения произошло другое исключение:

Traceback (последний последний вызов): Файл "/home/suleka/Documents/untitled1/RNN_CrediCard.py", строка 96, в train_neural_network (x) Файл "/home/suleka/Documents/untitled1/RNN_CrediCard.py", строка 79, в train_neural_network _, c = sess.run([оптимизатор, стоимость], feed_dict = {x: feature_batch, y: label_batch}) Файл "/home/suleka/anaconda3/lib/python3.6/site-packages/tensorflow/python/client/session.py ", строка 900, в run run_metadata_ptr) Файл"/home/suleka/anaconda3/lib/python3.6/site-packages/tensorflow/python/client/session.py ", строка 1135, в _run feed_dict_tensor, options, run_metadata) Файл "/home/suleka/anaconda3/lib/python3.6/site-packages/tensorflow/python/client/session.py", строка 1316, в _do_run run_metadata) Файл "/home/suleka/anaconda3/lib/python3.6/site-packages/tensorflow/python/client/session.py ", строка 1335, в стиле _do_call raise (e) (node_def, op, message) tensorflow.python.framework.errors_impl.InvalidArgumentError: логиты и метки должны быть широковещательными: logits_size = [1,2] labels_ size = [1,24] [[Узел: softmax_cross_entropy_with_logits_sg = SoftmaxCrossEntropyWithLogits [T = DT_FLOAT, _device = "/job: localhost/replica: 0/task: 0/device: CPU: 0"] (add, softmax_cross_entropy_with_logits_sg/Reshape_1)] ]

Вызывается op 'softmax_cross_entropy_with_logits_sg', определяемым по адресу:
Файл "/home/suleka/Documents/untitled1/RNN_CrediCard.py", строка 96, в train_neural_network (x) Файл "/home/suleka/Documents/untitled1/RNN_CrediCard.py", строка 63, в train_neural_network cost = tf.reduce_mean (tf.nn.softmax_cross_entropy_with_logits (logits = prediction, labels = y)) Файл "/home/suleka/anaconda3/lib/python3.6/site-packages/tensorflow/python/util/deprecation.py", строка 250, в new_func return func (* args, ** kwargs) Файл "/home/suleka/anaconda3/lib/python3.6/site-packages/tensorflow/python/ops/nn_ops.py", строка 1968, в файлах softmax_cross_entropy_with_logits = метки, logits = logits, dim = dim, name = name) Файл "/home/suleka/anaconda3/lib/python3.6/site-packages/tensorflow/python/ops/nn_ops.py", строка 1879, в softmax_cross_entropy_with_logits_v2 exact_logits, ярлыки, name = name) Файл "/home/suleka/anaconda3/lib/python3.6/site-packages/tensorflow/python/ops/gen_nn_ops.py", строка 7205, в softmax_cross_entropy_with_logits name = name) Файл "/home/suleka/anaconda3/lib/python3.6/site-package s/tensorflow/python/framework/op_def_library.py ", строка 787, в _apply_op_helper op_def = op_def) Файл"/home/suleka/anaconda3/lib/python3.6/site-packages/tensorflow/python/framework/ops.py ", строка 3414, в create_op op_def = op_def) Файл"/home/suleka/anaconda3/lib/python3.6/site-packages/tensorflow/python/framework/ops.py ", строка 1740, в init self._traceback = self._graph._extract_stack() # pylint: disable = protected-access

InvalidArgumentError (см. Выше для traceback): логиты и метки должны быть широковещательными: logits_size = [1,2] labels_size = [1,24] [[Узел: softmax_cross_entropy_with_logits_sg = SoftmaxCrossEntropyWithLogits [T = DT_FLOAT, _device = "/job: localhost/replica: 0/task: 0/device: CPU: 0 "] (add, softmax_cross_entropy_with_logits_sg/Reshape_1)]]


Может ли кто-нибудь указать, что я делаю неправильно в своем коде, а также любые проблемы в моем коде, если это возможно. Заранее спасибо.

Ниже приведен мой код:


import tensorflow as tf
from tensorflow.contrib import rnn



# cycles of feed forward and backprop
hm_epochs = 10
n_classes = 2
rnn_size = 128
col_size = 30
batch_size = 24
try_epochs = 1
fileName = "creditcard.csv"

def create_file_reader_ops(filename_queue):
    reader = tf.TextLineReader(skip_header_lines=1)
    _, csv_row = reader.read(filename_queue)
    record_defaults = [[1.], [1.], [1.], [1.], [1.], [1.], [1.], [1.], [1.], [1.], [1.], [1.], [1.], [1.], [1.], [1.], [1.], [1.], [1.], [1.], [1.], [1.], [1.], [1.], [1.], [1.], [1.], [1.], [1.], [1.], [1]]
    col1, col2, col3, col4, col5, col6, col7, col8, col9, col10, col11, col12, col13, col14, col15, col16, col17, col18, col19, col20, col21, col22, col23, col24, col25, col26, col27, col28, col29, col30, col31 = tf.decode_csv(csv_row, record_defaults=record_defaults)
    features = tf.stack([col1, col2, col3, col4, col5, col6, col7, col8, col9, col10, col11, col12, col13, col14, col15, col16, col17, col18, col19, col20, col21, col22, col23, col24, col25, col26, col27, col28, col29, col30])
    return features, col31


def input_pipeline(fName, batch_size, num_epochs=None):
    # this refers to multiple files, not line items within files
    filename_queue = tf.train.string_input_producer([fName], shuffle=True, num_epochs=num_epochs)
    features, label = create_file_reader_ops(filename_queue)
    min_after_dequeue = 10000 # min of where to start loading into memory
    capacity = min_after_dequeue + 3 * batch_size # max of how much to load into memory
    # this packs the above lines into a batch of size you specify:
    feature_batch, label_batch = tf.train.shuffle_batch(
        [features, label],
        batch_size=batch_size,
        capacity=capacity,
        min_after_dequeue=min_after_dequeue)
    return feature_batch, label_batch


creditCard_data, creditCard_label = input_pipeline(fileName, batch_size, try_epochs)


x = tf.placeholder('float',[None,col_size])
y = tf.placeholder('float')


def recurrent_neural_network_model(x):
    #giving the weights and biases random values
    layer ={ 'weights': tf.Variable(tf.random_normal([rnn_size, n_classes])),
            'bias': tf.Variable(tf.random_normal([n_classes]))}

    x = tf.split(x, 24, 0)
    print(x)

    lstm_cell = rnn.BasicLSTMCell(rnn_size)
    outputs, states = rnn.static_rnn(lstm_cell, x, dtype=tf.float32 )
    output = tf.matmul(outputs[-1], layer['weights']) + layer['bias']

    return output

def train_neural_network(x):
    prediction = recurrent_neural_network_model(x)
    cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=prediction, labels=y))
    optimizer = tf.train.AdamOptimizer().minimize(cost)


    with tf.Session() as sess:

        gInit = tf.global_variables_initializer().run()
        lInit = tf.local_variables_initializer().run()
        coord = tf.train.Coordinator()
        threads = tf.train.start_queue_runners(coord=coord)
        for epoch in range(hm_epochs):
            epoch_loss = 0

            for counter in range(101):
                    feature_batch, label_batch = sess.run([creditCard_data, creditCard_label])
                    print(label_batch.shape)
                    _, c = sess.run([optimizer, cost], feed_dict={x: feature_batch, y: label_batch})
                    epoch_loss += c
            print('Epoch', epoch, 'compleated out of', hm_epochs, 'loss:', epoch_loss)



train_neural_network(x)
Теги:
tensorflow
machine-learning
deep-learning
recurrent-neural-network

1 ответ

1

Когда ты сказал

    cost = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=prediction, labels=y))

предсказание и метки имеют несовместимые формы. Вам нужно изменить способ вычисления прогнозов, чтобы получить один пример на вашем мини-часе.

  • 0
    Да, это было одной из проблем в моем коде, и я допустил еще несколько ошибок. Я пытался использовать softmax_cross_entropy_with_logits, когда это двоичная классификация, где я должен был использовать sigmoid_cross_entropy_with_logits с переменной n_classes, установленной в 1.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню