Tensorflow - создавать логи, метки и рассчитывать потери - PullRequest
0 голосов
/ 01 октября 2019

Я занимаюсь обучением тензорному потоку, и у меня есть следующая задача:

Мне нужно создать 10 логитов в тензорном потоке с 2 скрытыми слоями и рассчитать их потерю с помощью функций

tf.nn.softmax()
tf.nn.sparse_softmax_cross_entropy_with_logits(logits=logits, labels=labels)
* 1005. * Мой код выглядит следующим образом:
import tensorflow as tf, numpy as np

trainx = np.array(trainx) / 300.0
trainy = np.array(trainy)
testx = np.array(testx) / 300.0
testy = np.array(testy)

print ('train x shape is {}'.format(trainx.shape))
print ('train y shape is {}'.format(trainy.shape))
print ('test x shape is {}'.format(testx.shape))
print ('tesy y shape is {}'.format(testy.shape))

learning_rate = 0.001

def get_train_batch():
  indices = np.random.randint(low=0, high=60000, size=[64])
  return trainx[indices], trainy[indices]

g = tf.Graph()
with g.as_default():

  x = tf.placeholder(float32, shape=[None, 784])
  y = tf.placeholder(float32, shape=[None, 784])

  def fc(tensor, outdim, name):
    w = tf.get_variable(name + "w", shape=[1, outdim], dtype=float32)
    b = tf.get_variable(name + "b", shape=[], dtype=float32, initializer=tf.constant_initializer(0.0) to tf.get_variable)
    return tf.add(tf.linalg.matmul(tensor, w), b)

  first = fc(trainx, trainx.shape, "first")
  first = tf.nn.relu(first)
  second = fc(first, trainx.shape, "second")
  second = tf.nn.relu(second)

  logits = []
  names = [some names]
  logits.append(tf.log_sigmoid(first))
  logits.append(tf.log_sigmoid(second))
  for i in range(10):
    logits.append(fc(trainx, trainx.shape, names[0]))

  tf.nn.softmax() // how do I use this paragraph to get the loss
  tf.nn.sparse_softmax_cross_entropy_with_logits(logits=logits, labels=labels)
  loss = ? // how do i calculate the loss here?

  optimizer = tf.train.GradientDescentOptimizer(learning_rate)
  minimize_op = optimizer.minimize(loss, var_list=tf.trainable_variables())

  sess = tf.Session()

  sess.run(tf.global_variables_initializer())

  for epoch in range(50000):
    randomX, randomY = get_train_batch()
    sess.run(minimize_op, feed_dict={x: randomX, y: randomY})
    if epoch % 50 == 0:
      trainloss = sess.run(loss, feed_dict={x: testx, y:testy})
      print("Current loss: ", trainloss)

Мои вопросы:

  1. Как правильно использовать упомянутые функции для расчета потерь
  2. Где я могуполучить ярлыки от?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...