我需要一些有关tf.data的帮助。
我正在对SQUAD数据集进行一些实验。给出的数据集结构如下:
row-1] { conext: "some big string", question:"q string", "answer": "some ans" }
我想利用 tf.data进行加载和预处理。加载后,将其加载到foll中。格式:
{
context: Tensor("some big string"),
question:Tensor(q string),
answer": Tensor(some ans)
}
现在,我们要预处理数据。现在,这里的预处理并不简单,因为值是Tensor对象。
Tensorflow提供了一些用于此类预处理的api,但是如果我想进行自定义预处理,或者我想使用仅对原始数据类型(例如字符串,而不是张量)进行操作的spacy,那么该怎么做? strong>
基本上,我需要此代码段的帮助:
def format_data(row):
# Now I can access individual data row here. But value of row is in Tensor form.
# Hence I can't use my custom function. How to use custom function or spacy function which operates on string and not on tensor?
# I can use only below tf functions
return tf.strings.regex_replace(row['context'],'some-regex',' ',True)
train = dataset.map(format_data).batch(2)
ist(train.take(1))
答案 0 :(得分:0)
以下代码有效:
def parse_str(str_tensor):
raw_string = str_tensor.numpy().decode("utf-8")
# play with raw string
raw_string = 'AAA'+raw_string
return raw_string
调用解析函数:
def tf_pre_processing(row):
return tf.py_function(parse_str, [row['context']], [tf.string])
train = t.map(tf_pre_processing).batch(1).take(1)
list(train)