如何解决将 csv 文件转换为 TFRecord 数据集
我有一个 csv 文件,它只有一列没有任何标题。在每一行中,有一个字符串。有些行也是空的。
This is string1
This is string2
This is string3
(empty row)
This is string4
(empty row)
This is string5
如何将此 csv 文件转换为 TFRecord 数据集,以便我以后可以将其用于机器学习目的?
解决方法
数据:
df=pd.DataFrame({'lab':['This is string1','This is string2','This is string3',np.nan,'This is string4','This is string5']})
我相信你可以用它来工作。
rec = df.to_records(index=False)
print(repr(rec))
s = rec.tobytes()
比你使用的函数:
def _bytes_feature(value):
"""Returns a bytes_list from a string / byte."""
if isinstance(value,type(tf.constant(0))):
value = value.numpy() # BytesList won't unpack a string from an EagerTensor.
return tf.train.Feature(bytes_list=tf.train.BytesList(value=[value]))
这个函数来自TFRecord e tf.train.Example。
之后:
print(_bytes_feature(s))
输出:
bytes_list { 值:"0t\372\023t\177\000\000px\372\023t\177\000\0000y\372\023t\177\000\000\220\323*@u\177\000\000\260 \372\023t\177\000\000\220\323*@u\177\000\000\360{\372\023t\177\000\000" }
那么:
a=_bytes_feature(s)
a=a.SerializeToString()
事实上,我们可以通过操作 SerializeToString() 方法将任何字符串序列化为二进制字符串。 输出:
b'\n:\n80t\xfa\x13t\x7f\x00\x00px\xfa\x13t\x7f\x00\x000y\xfa\x13t\x7f\x00\x00\x90\xd3*@u\x7f\ x00\x00\xb0~\xfa\x13t\x7f\x00\x00\x90\xd3*@u\x7f\x00\x00\xf0{\xfa\x13t\x7f\x00\x00' 1
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。