如何存储不定长列表的list到CSV的一行中并在tensorflow里读取他?

新手上路,请多包涵

我需要在一个没有pandas、numpy等库的python环境下存储数据, 之后在tensorflow中读取他们. 以下是数据格式和代码片段,注意 'xref' 和 'asm' 是不定长数组且这只是我数据库中的一个样本:

file_paths = ['1.csv']
ea = 1                          # int32
xref = [1,2]                    # N-list int32
asm = [[4,5,6,7,8],[9,0,1,2,3]] # Mx5-list float32
with open('1.csv','w') as f:
    csv_f = csv.writer(f)
    csv_f.writerow((ea,xref,asm))
# CSV file:
# 1,"[1, 2]","[[4, 5, 6, 7, 8], [9, 0, 1, 2, 3]]"

#loading
dataset = tf.data.TextLineDataset(file_paths)
for textline in dataset:
    record_default = [0,'0','0']        
    ea,xref,asm = tf.io.decode_csv(textline,record_defaults=record_default)

读到的数据格式如下:

<tf.Tensor: shape=(), dtype=int32, numpy=1>
<tf.Tensor: shape=(), dtype=string, numpy=b'[1, 2]'>
<tf.Tensor: shape=(), dtype=string, numpy=b'[[4, 5, 6, 7, 8], [9, 0, 1, 2, 3]]'>

但是我期望得到以下数据:

<tf.Tensor: shape=(), dtype=int32, numpy=1>
<tf.Tensor: shape=(2,), dtype=int32, numpy=array([1, 2])>
<tf.Tensor: shape=(2, 5), dtype=float32, numpy= array([[4, 5, 6, 7, 8], [9, 0, 1, 2, 3]])>

我该怎么办?因为我想用 dataset.map(func),让三元组在CSV中占据三行这种思路是不可接受的,我尝试了json格式的存储与读取,但是在tensorflow中他的效率太低了

阅读 931
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进