发新帖

求助 tensorflow 中RNN的问题

[复制链接]
796 6

快来加入 TensorFlowers 大家庭!

您需要 登录 才可以下载或查看,没有帐号?加入社区

x
本帖最后由 骑士总冠军 于 2018-8-11 13:22 编辑
  1. from __future__ import absolute_import, division, print_function

  2. import random

  3. import numpy as np
  4. import tensorflow as tf
  5. <u>from tensorflow.contrib.rnn import core_rnn
  6. from tensorflow.contrib.rnn import core_rnn_cell</u>


  7. def build_data(n):
  8.     xs = []
  9.     ys = []
  10.     for i in range(0, 2000):
  11.         k = random.uniform(1, 50)

  12.         x = [[np.sin(k + j)] for j in range(0, n)]
  13.         y = [np.sin(k + n)]

  14.         # x[i] = sin(k + i) (i = 0, 1, ..., n-1)
  15.         # y[i] = sin(k + n)
  16.         xs.append(x)
  17.         ys.append(y)

  18.     train_x = np.array(xs[0: 1500])
  19.     train_y = np.array(ys[0: 1500])
  20.     test_x = np.array(xs[1500:])
  21.     test_y = np.array(ys[1500:])
  22.     return (train_x, train_y, test_x, test_y)


  23. length = 10
  24. time_step_size = length
  25. vector_size = 1
  26. batch_size = 10
  27. test_size = 10

  28. # build data
  29. (train_x, train_y, test_x, test_y) = build_data(length)
  30. print(train_x.shape, train_y.shape, test_x.shape, test_y.shape)

  31. X = tf.placeholder("float", [None, length, vector_size])
  32. Y = tf.placeholder("float", [None, 1])

  33. # get lstm_size and output predicted value
  34. W = tf.Variable(tf.random_normal([10, 1], stddev=0.01))
  35. B = tf.Variable(tf.random_normal([1], stddev=0.01))


  36. def seq_predict_model(X, w, b, time_step_size, vector_size):
  37.     # input X shape: [batch_size, time_step_size, vector_size]
  38.     # transpose X to [time_step_size, batch_size, vector_size]
  39.     X = tf.transpose(X, [1, 0, 2])
  40.     # reshape X to [time_step_size * batch_size, vector_size]
  41.     X = tf.reshape(X, [-1, vector_size])
  42.     # split X, array[time_step_size], shape: [batch_size, vector_size]
  43.     X = tf.split(X, time_step_size, 0)

  44.     cell = core_rnn_cell.BasicRNNCell(num_units=10)
  45.     initial_state = tf.zeros([batch_size, cell.state_size])
  46.     outputs, _states = core_rnn.static_rnn(cell, X, initial_state=initial_state)

  47.     # Linear activation
  48.     return tf.matmul(outputs[-1], w) + b, cell.state_size


  49. pred_y, _ = seq_predict_model(X, W, B, time_step_size, vector_size)
  50. loss = tf.square(tf.subtract(Y, pred_y))
  51. train_op = tf.train.GradientDescentOptimizer(0.001).minimize(loss)

  52. with tf.Session() as sess:
  53.     tf.global_variables_initializer().run()

  54.     # train
  55.     for i in range(50):
  56.         # train
  57.         for end in range(batch_size, len(train_x), batch_size):
  58.             begin = end - batch_size
  59.             x_value = train_x[begin: end]
  60.             y_value = train_y[begin: end]
  61.             sess.run(train_op, feed_dict={X: x_value, Y: y_value})

  62.         # randomly select validation set from test set
  63.         test_indices = np.arange(len(test_x))
  64.         np.random.shuffle(test_indices)
  65.         test_indices = test_indices[0: test_size]
  66.         x_value = test_x[test_indices]
  67.         y_value = test_y[test_indices]

  68.         # eval in validation set
  69.         val_loss = np.mean(sess.run(loss,
  70.                                     feed_dict={X: x_value, Y: y_value}))
  71.         print('Run %s' % i, val_loss)

  72.     for b in range(0, len(test_x), test_size):
  73.         x_value = test_x[b: b + test_size]
  74.         y_value = test_y[b: b + test_size]
  75.         pred = sess.run(pred_y, feed_dict={X: x_value})
  76.         for i in range(len(pred)):
  77.             print(pred[i], y_value[i], pred[i] - y_value[i])
复制代码
这是书上附带的源码,没有任何修改

我知道答案 回答被采纳将会获得10 金币 + 5 金币 已有6人回答

错误提示

错误提示
本楼点评(0) 收起

精彩评论6

M丶Sulayman  TF豆豆  发表于 2018-4-24 17:28:31 | 显示全部楼层
https://github.com/tensorflow/tensorflow/issues/6432 希望对你有帮助,似乎是版本问题
本楼点评(2) 收起
舟3332  TF芽芽  发表于 2018-4-25 16:00:47 来自手机  | 显示全部楼层
错误信息说的是找不到对应的类。所以我觉得楼上的说法挺靠谱的。
本楼点评(0) 收起
舟3332  TF芽芽  发表于 2018-5-2 18:08:30 | 显示全部楼层
问题解决了,建议把问题标记成已解决,再选一个最优答案哦~
本楼点评(0) 收起
骑士总冠军  TF荚荚  发表于 2018-5-2 19:47:08 | 显示全部楼层
舟3332 发表于 2018-5-2 18:08
问题解决了,建议把问题标记成已解决,再选一个最优答案哦~

还没解决哦
本楼点评(0) 收起
zhanys_7  TF荚荚  发表于 2018-7-3 18:26:24 | 显示全部楼层
版本问题吧
本楼点评(0) 收起
neverchange  TF豆豆  发表于 2018-7-4 00:33:36 | 显示全部楼层
编辑帖子,然后mark成已解决是个好习惯
本楼点评(0) 收起
您需要登录后才可以回帖 登录 | 加入社区

本版积分规则

快速回复 返回顶部 返回列表