gpt4 book ai didi

tensorflow - 对于可变长度字符串,我用什么代替 tf.decode_raw?

转载 作者:行者123 更新时间:2023-12-04 01:59:26 26 4
gpt4 key购买 nike

我有一个只是字符串的特征列:

tf.FixedLenFeature((), tf.string)

我的图表使用 tf.decode_raw 将张量转换为二进制:

tf.decode_raw(features['text'], tf.uint8)

这适用于 batch_size = 1,但当字符串长度不同时 batch_size > 1 则失败。 decode_raw throws DecodeRaw 要求输入字符串的大小都相同

是否有 tf.decode_raw 的替代方案返回填充的张量和字符串的长度?

最佳答案

我会使用 tf.data.Dataset .启用急切执行:

import tensorflow as tf
import tensorflow.contrib.eager as tfe
tfe.enable_eager_execution()

def _decode_and_length_map(encoded_string):
decoded = tf.decode_raw(encoded_string, out_type=tf.uint8)
return decoded, tf.shape(decoded)[0]

inputs = tf.constant(["aaa", "bbbbbbbb", "abcde"], dtype=tf.string)
dataset = (tf.data.Dataset.from_tensor_slices(inputs)
.map(_decode_and_length_map)
.padded_batch(batch_size=2, padded_shapes=([None], [])))
iterator = tfe.Iterator(dataset)
print(iterator.next())
print(iterator.next())

打印(免责声明:手动重新格式化)

(<tf.Tensor: id=24, shape=(2, 8), dtype=uint8,
numpy=array([[97, 97, 97, 0, 0, 0, 0, 0],
[98, 98, 98, 98, 98, 98, 98, 98]], dtype=uint8)>,
<tf.Tensor: id=25, shape=(2,), dtype=int32, numpy=array([3, 8], dtype=int32)>)

(<tf.Tensor: id=28, shape=(1, 5), dtype=uint8,
numpy=array([[ 97, 98, 99, 100, 101]], dtype=uint8)>,
<tf.Tensor: id=29, shape=(1,), dtype=int32, numpy=array([5], dtype=int32)>)

当然,您可以混合和匹配数据源、添加随机化、更改填充字符等。

也适用于图形构建:

import tensorflow as tf

def _decode_and_length_map(encoded_string):
decoded = tf.decode_raw(encoded_string, out_type=tf.uint8)
return decoded, tf.shape(decoded)[0]

inputs = tf.constant(["aaa", "bbbbbbbb", "abcde"], dtype=tf.string)
dataset = (tf.data.Dataset.from_tensor_slices(inputs)
.map(_decode_and_length_map)
.padded_batch(batch_size=2, padded_shapes=([None], [])))
batch_op = dataset.make_one_shot_iterator().get_next()
with tf.Session() as session:
print(session.run(batch_op))
print(session.run(batch_op))

关于tensorflow - 对于可变长度字符串,我用什么代替 tf.decode_raw?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48396442/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com