如何在Tensorflow中使用sampled_softmax_loss

戴夫·艾尔

我是tensorflow的初学者。我已经建立了简单的模型,但是还没有尝试过多层LSTM之类的东西,因此非常感谢任何反馈:)

我目前正在尝试从头开始重新编码由sherjilozair构建的字符级模型,仅仅是因为我想知道如何使用tensorflow(我以前已经建立了自己的很小的DL库,由cs231n分配)。现在,我目前正在努力构建一个简单的2层LSTM模型,并且不确定有什么问题。这是我到目前为止编写的代码:

class Model():
    def __init__(self, batch_size, seq_length, lstm_size, num_layers, grad_clip, vocab_size):
        self.lr = tf.Variable(0.0, trainable=False)        

        #Define input and output
        self.input_data = tf.placeholder(tf.float32, [batch_size, seq_length])
        self.output_data = tf.placeholder(tf.float32, [batch_size, seq_length]) #although int would be better for character level..

        #Define the model
        cell = tf.nn.rnn_cell.BasicLSTMCell(num_units=lstm_size) #can choose if basic or otherwise later on...
        self.cell = cell = rnn_cell.MultiRNNCell([cell] * num_layers)
        self.initial_state = cell.zero_state(batch_size, tf.float32)


        with tf.variable_scope("lstm"):
            softmax_w = tf.get_variable("softmax_w", [lstm_size, vocab_size])
            softmax_b = tf.get_variable("softmax_b", [vocab_size])

        #_, enc_state = rnn.rnn(cell, encoder_inputs, dtype=dtype)
        #outputs, states = rnn_decoder(decoder_inputs, enc_state, cell)


        outputs, states = seq2seq.basic_rnn_seq2seq(
                            [self.input_data],
                            [self.output_data], 
                            cell,
                            scope='lstm'
                        )


        #see how attention helps improving this model state...

        #was told that we should actually use samples softmax loss
        self.loss = tf.nn.sampled_softmax_loss(
                                    softmax_w, 
                                    softmax_b,
                                    outputs, 
                                    self.output_data,
                                    batch_size,
                                    vocab_size
                )

而且我目前在tf.nn.sampled_softmax_loss上遇到问题。我在调试方面已经走了很长一段路,并且不了解Tensorflow的输入约定。每次都需要输入张量列表吗?

我收到以下错误:

Traceback (most recent call last):
  File "Model.py", line 76, in <module>
vocab_size=82
  File "Model.py", line 52, in __init__
vocab_size
  File "/usr/local/lib/python2.7/site-packages/tensorflow/python/ops/nn.py", line 1104, in sampled_softmax_loss
name=name)
  File "/usr/local/lib/python2.7/site-packages/tensorflow/python/ops/nn.py", line 913, in _compute_sampled_logits
array_ops.expand_dims(inputs, 1),
  File "/usr/local/lib/python2.7/site-packages/tensorflow/python/ops/gen_array_ops.py", line 506, in expand_dims
return _op_def_lib.apply_op("ExpandDims", input=input, dim=dim, name=name)
  File "/usr/local/lib/python2.7/site-packages/tensorflow/python/ops/op_def_library.py", line 411, in apply_op
as_ref=input_arg.is_ref)
  File "/usr/local/lib/python2.7/site-packages/tensorflow/python/framework/ops.py", line 566, in convert_to_tensor
ret = conversion_func(value, dtype=dtype, name=name, as_ref=as_ref)
  File "/usr/local/lib/python2.7/site-packages/tensorflow/python/ops/constant_op.py", line 179, in _constant_tensor_conversion_function
return constant(v, dtype=dtype, name=name)
  File "/usr/local/lib/python2.7/site-packages/tensorflow/python/ops/constant_op.py", line 162, in constant
tensor_util.make_tensor_proto(value, dtype=dtype, shape=shape))
  File "/usr/local/lib/python2.7/site-packages/tensorflow/python/framework/tensor_util.py", line 332, in make_tensor_proto
_AssertCompatible(values, dtype)
  File "/usr/local/lib/python2.7/site-packages/tensorflow/python/framework/tensor_util.py", line 269, in _AssertCompatible
    raise TypeError("List of Tensors when single Tensor expected")
TypeError: List of Tensors when single Tensor expected

我不确定输入或变量的生成在做什么错。问题-如前所述-似乎在sampled_softmax_loss函数中,但是我真的不确定。具有以下参数(仅作为占位符,仅用于测试模型是否“可运行”):

Model = Model(batch_size=32, 
              seq_length=128, 
              lstm_size=512, 
              num_layers=2, 
              grad_clip=5,
              vocab_size=82
             )

另外,如果我犯了其他错误等,请在评论中告诉我!这是我的第一个在tensorflow中使用seq2seq模型的模型,因此任何建议都将不胜感激!

西吉

outputstf.nn.sampled_softmax_loss需要单个张量时,此特定错误与通过列表有关

seq2seq.basic_rnn_seq2seq函数返回的大小张量清单[batch_size x output_size]作为第一输出。假设每个输出都是一维的,则要使用tf.concat(创建一个张量size [seq_len x batch_size x 1]),tf.squeeze最后一个维度(结果[seq_len x batch_size])和tf.transpose合并输出列表,使其output具有size [batch_size x seq_len],与相同self.output_data

要调试该问题,请使用来打印张量大小print(output.get_shape())

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在TensorFlow中使用分布式DNN训练?

来自分类Dev

如何在TensorFlow中使用“ FLAGS”(命令行开关)?

来自分类Dev

在Tensorflow中,sampled_softmax_loss和softmax_cross_entropy_with_logits有什么区别

来自分类Dev

如何在Tensorflow中使用逐事件权重?

来自分类Dev

如何在TensorFlow中使用线性激活函数?

来自分类Dev

如何在Tensorflow中使用L2池?

来自分类Dev

如何在tensorflow中打印张量的值mnist_softmax.py

来自分类Dev

如何在tensorflow占位符中使用get_collection

来自分类Dev

如何在Tensorflow中使用CheckpointReader还原变量

来自分类Dev

如何在TensorFlow-Slim中使用正则化?

来自分类Dev

如何在Tensorflow 2.0中使用误报指标?

来自分类Dev

如何在tensorflow对象检测API中使用“忽略”类?

来自分类Dev

如何在Tensorflow Keras中使用tf.nn.sampled_softmax_loss?

来自分类Dev

如何使用Tensorflow.JS实现softmax

来自分类Dev

如何在Tensorflow-keras中使用nlp的预测?

来自分类Dev

如何在Keras Tensorflow 2.3中使用随机缩放

来自分类Dev

如何在TensorFlow中使用K折交叉验证

来自分类Dev

如何在Tensorflow中使用L2池?

来自分类Dev

如何在使用 tf.nn.softmax 计算 softmax 期间避免填充索引?

来自分类Dev

如何在 jupyter notebook 中使用 TensorFlow?我已经通过 python 3.5 pip 安装了 TensorFlow

来自分类Dev

如何在 Windows 10 中使用 GPU 实现 tensorflow?

来自分类Dev

如何在 Tensorflow 中使用预训练模型?

来自分类Dev

如何在实际示例中使用 Tensorflow 队列

来自分类Dev

为什么 Tensorflow 的 sampled_softmax_loss 强制您使用偏差,而专家建议 Word2Vec 不使用偏差?

来自分类Dev

如何在 Flask 中使用 TensorFlow

来自分类Dev

如何在 TensorFlow 中使用模型 Inception.tgz?

来自分类Dev

如何在 tizen studio 中使用 Tensorflow?

来自分类Dev

如何在 Tensorflow 中使用张量生成数据集

来自分类Dev

如何在 Tensorflow 2.0 中使用嵌入投影仪

Related 相关文章

  1. 1

    如何在TensorFlow中使用分布式DNN训练?

  2. 2

    如何在TensorFlow中使用“ FLAGS”(命令行开关)?

  3. 3

    在Tensorflow中,sampled_softmax_loss和softmax_cross_entropy_with_logits有什么区别

  4. 4

    如何在Tensorflow中使用逐事件权重?

  5. 5

    如何在TensorFlow中使用线性激活函数?

  6. 6

    如何在Tensorflow中使用L2池?

  7. 7

    如何在tensorflow中打印张量的值mnist_softmax.py

  8. 8

    如何在tensorflow占位符中使用get_collection

  9. 9

    如何在Tensorflow中使用CheckpointReader还原变量

  10. 10

    如何在TensorFlow-Slim中使用正则化?

  11. 11

    如何在Tensorflow 2.0中使用误报指标?

  12. 12

    如何在tensorflow对象检测API中使用“忽略”类?

  13. 13

    如何在Tensorflow Keras中使用tf.nn.sampled_softmax_loss?

  14. 14

    如何使用Tensorflow.JS实现softmax

  15. 15

    如何在Tensorflow-keras中使用nlp的预测?

  16. 16

    如何在Keras Tensorflow 2.3中使用随机缩放

  17. 17

    如何在TensorFlow中使用K折交叉验证

  18. 18

    如何在Tensorflow中使用L2池?

  19. 19

    如何在使用 tf.nn.softmax 计算 softmax 期间避免填充索引?

  20. 20

    如何在 jupyter notebook 中使用 TensorFlow?我已经通过 python 3.5 pip 安装了 TensorFlow

  21. 21

    如何在 Windows 10 中使用 GPU 实现 tensorflow?

  22. 22

    如何在 Tensorflow 中使用预训练模型?

  23. 23

    如何在实际示例中使用 Tensorflow 队列

  24. 24

    为什么 Tensorflow 的 sampled_softmax_loss 强制您使用偏差,而专家建议 Word2Vec 不使用偏差?

  25. 25

    如何在 Flask 中使用 TensorFlow

  26. 26

    如何在 TensorFlow 中使用模型 Inception.tgz?

  27. 27

    如何在 tizen studio 中使用 Tensorflow?

  28. 28

    如何在 Tensorflow 中使用张量生成数据集

  29. 29

    如何在 Tensorflow 2.0 中使用嵌入投影仪

热门标签

归档