擅长:python、mysql、java
<p>如果操作的结果具有形状<code>[1, 16]</code>,则表示它正在生成16个不同的字符串,而不是一个字符串。在</p>
<p>Java中对多维字符串张量的支持是最近才添加的(<a href="https://github.com/tensorflow/tensorflow/commit/db1e43e3335e190db1a27e0e74f104d7bc5471dd" rel="nofollow noreferrer">github commit</a>),在TensorFlow 1.3版及之前版本的预构建二进制文件中没有包含。您必须要么从源代码构建,要么等待TensorFlow 1.4发布。在</p>
<p>有了这个特性,您应该能够用如下方式解码<code>(1, 16)</code>形张量:</p>
<pre><code>Tensor predictedTensor = result.get(0);
byte[][][] predictedTokenBytes = predictedTensor.copyTo(new byte[1][16][]);
String[] predictedTokens = new String[16];
for (int i = 0; i < 16; ++i) {
// This works under the assumption that the model is actually
// producing UTF-8 strings
predictedTokens[i] = new String(predictedTokenBytes[0][i], "UTF-8");
}
</code></pre>
<p>如果您真的需要一个字符串,那么是的,您可以使用<code>tf.reduce_join</code>让模型将16个字符串合并为一个字符串,然后提取标量。在</p>