我怎样才能完成以下用 tensorflow 编写的基于 GRU 的 RNN?
How can I complete following GRU based RNN written in tensorflow?
到目前为止,我已经编写了以下代码:
import pickle
import numpy as np
import pandas as pd
import tensorflow as tf
# load pickled objects (x and y)
x_input, y_actual = pickle.load(open('sample_input.pickle', 'rb'))
x_input = np.reshape(x_input, (50, 1))
y_actual = np.reshape(y_actual, (50, 1))
# parameters
batch_size = 50
hidden_size = 100
# create network graph
input_data = tf.placeholder(tf.float32, [batch_size, 1])
output_data = tf.placeholder(tf.float32, [batch_size, 1])
cell = tf.nn.rnn_cell.GRUCell(hidden_size)
initial_state = cell.zero_state(batch_size, tf.float32)
hidden_state = initial_state
output_of_cell, hidden_state = cell(inputs=input_data, state=hidden_state)
init_op = tf.initialize_all_variables()
softmax_w = tf.get_variable("softmax_w", [hidden_size, 1], )
softmax_b = tf.get_variable("softmax_b", [1])
logits = tf.matmul(output_of_cell, softmax_w) + softmax_b
probabilities = tf.nn.softmax(logits)
sess = tf.Session()
sess.run(init_op)
something = sess.run([probabilities, hidden_state], feed_dict={input_data:x_input, output_data:y_actual})
#cost = tf.nn.sigmoid_cross_entropy_with_logits(logits, output_data)
#sess.close()
但是我收到 softmax_w/b
作为未初始化变量的错误。
我不知道我应该如何使用这些 W
和 b
并进行火车操作。
类似于以下内容:
## some cost function
## training operation minimizing cost function using gradient descent optimizer
tf.initialize_all_variables()
从图中获取 "current" 组变量。由于您是在调用 tf.initialize_all_variables()
之后创建 softmax_w
和 softmax_b
,它们不在 tf.initialize_all_variables()
查询的列表中,因此当您 运行 时它们不会被初始化sess.run(init_op)
。以下应该有效:
softmax_w = tf.get_variable("softmax_w", [hidden_size, 1], )
softmax_b = tf.get_variable("softmax_b", [1])
init_op = tf.initialize_all_variables()
到目前为止,我已经编写了以下代码:
import pickle
import numpy as np
import pandas as pd
import tensorflow as tf
# load pickled objects (x and y)
x_input, y_actual = pickle.load(open('sample_input.pickle', 'rb'))
x_input = np.reshape(x_input, (50, 1))
y_actual = np.reshape(y_actual, (50, 1))
# parameters
batch_size = 50
hidden_size = 100
# create network graph
input_data = tf.placeholder(tf.float32, [batch_size, 1])
output_data = tf.placeholder(tf.float32, [batch_size, 1])
cell = tf.nn.rnn_cell.GRUCell(hidden_size)
initial_state = cell.zero_state(batch_size, tf.float32)
hidden_state = initial_state
output_of_cell, hidden_state = cell(inputs=input_data, state=hidden_state)
init_op = tf.initialize_all_variables()
softmax_w = tf.get_variable("softmax_w", [hidden_size, 1], )
softmax_b = tf.get_variable("softmax_b", [1])
logits = tf.matmul(output_of_cell, softmax_w) + softmax_b
probabilities = tf.nn.softmax(logits)
sess = tf.Session()
sess.run(init_op)
something = sess.run([probabilities, hidden_state], feed_dict={input_data:x_input, output_data:y_actual})
#cost = tf.nn.sigmoid_cross_entropy_with_logits(logits, output_data)
#sess.close()
但是我收到 softmax_w/b
作为未初始化变量的错误。
我不知道我应该如何使用这些 W
和 b
并进行火车操作。
类似于以下内容:
## some cost function
## training operation minimizing cost function using gradient descent optimizer
tf.initialize_all_variables()
从图中获取 "current" 组变量。由于您是在调用 tf.initialize_all_variables()
之后创建 softmax_w
和 softmax_b
,它们不在 tf.initialize_all_variables()
查询的列表中,因此当您 运行 时它们不会被初始化sess.run(init_op)
。以下应该有效:
softmax_w = tf.get_variable("softmax_w", [hidden_size, 1], )
softmax_b = tf.get_variable("softmax_b", [1])
init_op = tf.initialize_all_variables()