Tensorflow всегда возвращает Nan - PullRequest
0 голосов
/ 01 марта 2019

Я создаю нейронную сеть в тензорном потоке, и мой результат всегда равен nan.Я не совсем уверен, что это значит, но я слышал, что это означает, что проблема что-то вроде log (0).Я не могу найти ничего подобного в моем коде, хотя.Вот мой код:

import tensorflow as tf
import numpy as np
import pandas as pd
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'

all_data = pd.read_csv('/projects/first-repository/train.csv')
all_data = all_data.values

layer1_size = 4
layer2_size = 20
layer3_size = 1

data = np.stack([all_data[:, 2], all_data[:, 5], all_data[:, 6], all_data[:, 7]])
data = tf.convert_to_tensor(data, np.float32)
labels = all_data[:, 1]
labels = tf.convert_to_tensor(labels, np.float32)
labels = tf.reshape(labels, [891, 1])

theta1 = tf.get_variable('theta1', shape=(layer2_size, layer1_size), initializer=tf.contrib.layers.xavier_initializer())
theta2 = tf.get_variable('theta2', shape=(layer3_size, layer2_size), initializer=tf.contrib.layers.xavier_initializer())

a1 = data
z2 = tf.matmul(theta1, a1)
a2 = tf.nn.relu(z2)
z3 = tf.matmul(theta2, a2)
a3 = tf.nn.softmax(z3)
h = tf.transpose(a3)

cost = tf.reduce_sum(tf.nn.sigmoid_cross_entropy_with_logits(labels=labels, logits=h))
train = tf.train.AdamOptimizer(0.01).minimize(cost)

init = tf.global_variables_initializer()

with tf.Session() as sess:
    sess.run(init)
    for i in range(1):
        sess.run(train)
        print(sess.run(cost))

Я пытался заменить h на h + 1e-4, и вывод не изменился.Как мне это исправить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...