当前位置: 首页 > 知识库问答 >
问题:

张量流

湛安宁
2023-03-14

我试图在张量流图中使用条件随机场损失。

我正在执行序列标记任务:

我有一系列元素作为输入[a,B,C,D]。每个元素可以属于三个不同类中的一个。类以一种热编码方式表示:属于类0的元素由向量[1,0,0]表示。

我的输入标签(y)有大小(batch_sizexsequence_lengthxnum_classes)。

我的网络产生相同形状的日志。

假设我所有的序列都有长度4。

这是我的代码

import tensorflow as tf

sequence_length = 4
num_classes = 3
input_y = tf.placeholder(tf.int32, shape=[None, sequence_length, num_classes])
logits = tf.placeholder(tf.float32, shape=[None, None, num_classes])
dense_y = tf.argmax(input_y, -1, output_type=tf.int32)

log_likelihood, _ = tf.contrib.crf.crf_log_likelihood(logits, dense_y, sequence_length)

我得到以下错误:

文件“/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/crf/python/ops/crf.py”中的第1行“/usr/local/lib/python2.7/dist-packages/tensorflow/contrib/crf/python/ops/crf.py”,第182行,在crf\u-sequence\u-score-false\fn=\u-multi-seq\fn)文件中“/usr/local/lib/python2。7/dist包/tensorflow/python/layers/utils。py“,第206行,在smart\u cond pred中,true\u fn=true\u fn,false\u fn=false\u fn,name=name)文件“/usr/local/lib/python2。7/dist包/tensorflow/python/framework/smart\u cond。py”,第59行,在smart_cond name=name)文件“/usr/local/lib/python2中。7/dist包/tensorflow/python/util/deprecation。py”,第432行,在新函数return func(*args,**kwargs)文件“/usr/local/lib/python2中。7/dist包/tensorflow/python/ops/control\u flow\u ops。py”,第2063行,在cond orig_res_t中,res_t=context_t.BuildCondBranch(true_fn)文件“/usr/local/lib/python2。7/dist包/tensorflow/python/ops/control\u flow\u ops。py”,第1913行,在BuildCondBranch原始_result=fn()文件“/usr/local/lib/python2中。7/dist包/tensorflow/contrib/crf/python/ops/crf。py“,第95行,在文件“/usr/local/lib/python2”中的单个fn数组操作concat([示例索引,标记索引],axis=1)。7/dist包/tensorflow/python/ops/gen_数组_ops。py“,第2975行,在gather_nd“GatherNd”中,params=params,index=index,name=name)文件“/usr/local/lib/python2。7/dist包/tensorflow/python/framework/op_def_库。py“,第787行,在_apply_op_helper op_def=op_def)文件“/usr/local/lib/python2中。7/dist包/tensorflow/python/framework/ops。py”,第3392行,在create_op_def=op_def)文件“/usr/local/lib/python2中。7/dist包/tensorflow/python/framework/ops。py”,第1734行,在init控制输入(ops)文件“/usr/local/lib/python2中。7/dist包/tensorflow/python/framework/ops。py“,第1570行,在创建操作提升值错误(str(e))值错误:索引。形状[-1]必须为

共有1个答案

樊奇思
2023-03-14

错误是由于序列长度变量的维数错误造成的。它必须是向量,而不是标量。

import tensorflow as tf

num_classes = 3
input_x = tf.placeholder(tf.int32, shape=[None, None], name="input_x")
input_y = tf.placeholder(tf.int32, shape=[None, sequence_length, num_classes])
sequence_length = tf.reduce_sum(tf.sign(input_x), 1)

# After some network operation you will come up with logits

logits = tf.placeholder(tf.float32, shape=[None, None, num_classes])
dense_y = tf.argmax(input_y, -1, output_type=tf.int32)
log_likelihood, _ = tf.contrib.crf.crf_log_likelihood(logits, dense_y, sequence_length
 类似资料:
  • 矩阵和标量可用几种不同方法合并。例如,通过从矩阵中每元素减去同一个数,矩阵就减去了一个标量。我们的魔方中元素的平均值是8.5,因此 B = A - 8.5 组成一个列向量和为零的矩阵。 B = 7.5 -5.5 -6.5 4.5 -3.5 1.5 2.5 -0.5 0.5 -2.5 -1.5

  • 译者:阿远 每个 torch.Tensor 对象都有以下几个属性: torch.dtype, torch.device, 和 torch.layout。 torch.dtype class torch.dtype torch.dtype 属性标识了 torch.Tensor的数据类型。PyTorch 有八种不同的数据类型: Data type dtype Tensor types 32-bit

  • 我正在努力把我的模型放在Android Studio。为了在Android studio中使用我的模型,我还知道需要将libandroid_tensorflow_inference_java.jar和libtensorflow_inference.so文件放入Android studio的资产文件夹中。因此,我使用git下载tensorflow库,并使用它构建。So和。jar文件。在创建。so文件

  • 我下面的代码产生了常规的tensorflow模型,但当我试图将其转换为tensorflow lite时,它不起作用,我遵循了以下文档。 https://www.tensorflow.org/tutorials/estimator/linear1 https://www.tensorflow.org/lite/guide/get_started 错误信息 文档摘录 TensorFlow Lite转换

  • 分配张量时如何解决ResourceExhaustedError: OOM的问题? ResourceExhaustedError(回溯见上文):使用形状分配张量时OOM[10000,32,28,28] 我包含了几乎所有的代码 错误中引用的行是: 快跑。。在训练循环中 下面列出了我从调试器输出复制的更多错误(有更多行,但我认为这些是主要错误,其他错误是由此引起的…) tensorflow.python

  • 非常类似于这个问题,如何在TensorFlow中找到第一个匹配元素的索引 我试着解决这个问题,但不同的是,val不是一个单一的数字,而是一个张量 所以例子 我知道我可以使用一个while循环,但这看起来很混乱。我可以尝试一个映射函数,但是有更优雅的吗?