我用tensorflow实现了一个语言模型。训练数据就是这样的feed_dict中的大量句子:feed_dict = {
model.inputs: x,
model.seqlen:seqlen
}
x看起来像:
^{pr2}$
我的型号代码:import numpy as np
import tensorflow as tf
from tensorflow.python.ops import array_ops
class Model(object):
def __init__(
self,
batch_size,
vocab_size,
hidden_size,
learning_rate):
self.inputs = tf.placeholder(tf.int32, [batch_size, None])
self.seqlen = tf.placeholder(tf.float32)
with tf.device('/cpu:0'), tf.name_scope("embedding"):
# embed = tf.get_variable(name="Embedding", shape=[vocab_size, hidden_size])
embed = tf.Variable(
tf.random_uniform([vocab_size, hidden_size], -1.0, 1.0))
self.embedded_chars = tf.nn.embedding_lookup(embed, self.inputs)
self.rev_input = tf.reverse(self.inputs, [False,True])
self.embedded_chars_rev = tf.nn.embedding_lookup(embed, self.rev_input)
with tf.variable_scope('forward'):
forward_lstm_cell = tf.nn.rnn_cell.BasicLSTMCell(hidden_size)
forward_outputs, _ = tf.nn.dynamic_rnn(forward_lstm_cell, self.embedded_chars,
sequence_length=self.seqlen,
dtype=tf.float32)
with tf.variable_scope('backward'):
backward_lstm_cell = tf.nn.rnn_cell.BasicLSTMCell(hidden_size)
backward_outputs, _ = tf.nn.dynamic_rnn(backward_lstm_cell,
self.embedded_chars_rev,
sequence_length=self.seqlen,
dtype=tf.float32)
lstm_outputs = tf.add(forward_outputs, backward_outputs, name="lstm_outputs")
self.outputs = tf.nn.relu(lstm_outputs)
# W = tf.Variable(tf.truncated_normal([hidden_size,vocab_size, 1], -0.1, 0.1))
W = tf.get_variable('Weights', shape=[hidden_size, 1])
b = tf.get_variable('Bias', shape=[1])
outputs = self.outputs[:,1,:]
y_pred = tf.squeeze(tf.matmul(outputs, W)) + b
inputs_0 = tf.cast(self.inputs[:,0], tf.float32)
self.loss = tf.nn.sigmoid_cross_entropy_with_logits(y_pred, inputs_0)
self.train_op = tf.train.AdamOptimizer(0.0002).minimize(self.loss)
当我输入数据并运行时,出现错误:Traceback (most recent call last):
File "h1_mscc/train_model.py", line 156, in
tf.app.run()
File "/usr/lib/python2.7/site-packages/tensorflow/python/platform/app.py", line 30, in run
sys.exit(main(sys.argv))
File "h1_mscc/train_model.py", line 153, in main
train()
File "h1_mscc/train_model.py", line 143, in train
train_step(batch,seqlen)
File "h1_mscc/train_model.py", line 134, in train_step
feed_dict)
File "/usr/lib/python2.7/site-packages/tensorflow/python/client/session.py", line 372, in run
run_metadata_ptr)
File "/usr/lib/python2.7/site-packages/tensorflow/python/client/session.py", line 636, in _run
feed_dict_string, options, run_metadata)
File "/usr/lib/python2.7/site-packages/tensorflow/python/client/session.py", line 708, in _do_run
target_list, options, run_metadata)
File "/usr/lib/python2.7/site-packages/tensorflow/python/client/session.py", line 728, in _do_call
raise type(e)(node_def, op, message)
tensorflow.python.framework.errors.InvalidArgumentError: indices[0,0] = 205505 is not in [0, 50000)
[[Node: embedding/embedding_lookup_1 = Gather[Tindices=DT_INT32, Tparams=DT_FLOAT, _class=["loc:@embedding/Variable"], validate_indices=true, _device="/job:localhost/replica:0/task:0/cpu:0"](embedding/Variable/read, embedding/Reverse)]]
Caused by op u'embedding/embedding_lookup_1', defined at:
File "h1_mscc/train_model.py", line 156, in
tf.app.run()
File "/usr/lib/python2.7/site-packages/tensorflow/python/platform/app.py", line 30, in run
sys.exit(main(sys.argv))
File "h1_mscc/train_model.py", line 153, in main
train()
File "h1_mscc/train_model.py", line 81, in train
model = create_model(sess)
File "h1_mscc/train_model.py", line 59, in create_model
learning_rate=FLAGS.learning_rate)
File "/home/liac/code/Project3-preprocess-master/h1_mscc/model1.py", line 24, in __init__
self.embedded_chars_rev = tf.nn.embedding_lookup(embed, self.rev_input)
File "/usr/lib/python2.7/site-packages/tensorflow/python/ops/embedding_ops.py", line 86, in embedding_lookup
validate_indices=validate_indices)
File "/usr/lib/python2.7/site-packages/tensorflow/python/ops/gen_array_ops.py", line 780, in gather
validate_indices=validate_indices, name=name)
File "/usr/lib/python2.7/site-packages/tensorflow/python/ops/op_def_library.py", line 704, in apply_op
op_def=op_def)
File "/usr/lib/python2.7/site-packages/tensorflow/python/framework/ops.py", line 2260, in create_op
original_op=self._default_original_op, op_def=op_def)
File "/usr/lib/python2.7/site-packages/tensorflow/python/framework/ops.py", line 1230, in __init__
self._traceback = _extract_stack()
这让我很困惑,希望能得到一些回应!
输入