最近在琢磨一个问题,DL模型读取数据的形式是向量,那么假使存储数据格式为tfrecord。在这种情况下,有几个问题需要解决。
- 需要将里面的数据转换为向量。并且在转换的过程中,会使用feature column的api来进行一些特征加工,比如one-hot。
- 同时,测试集的数据也要转换为同样的向量格式。
- 最后,在线上serving的时候,从后端获取的数据为float或者string形式,也要进行同样的特征加工,才能被送进模型进行预测。
为了解决上面三个点,笔者思考了下具体实现( tf 版本是1.9.0),写了段代码测试。记录如下。
# 首先是生成训练集test1.tfrecord和测试集合test2.tfrecord, 保存到tfrecord
# -*- coding: utf-8 -*-
"""
Created on Sun Feb 13 15:56:26 2022
@author: 86155
"""
import tensorflow as tf
import numpy as np
f0 = np.random.random([3,1])
f1 = np.random.random([3,1])
f2 = np.array([b'b',b'b',b'c'])
data = {
"f0": f0, "f1": f1, "f2":f2
}
writer = tf.python_io.TFRecordWriter('%s.tfrecord' %'test2')
for i in range(3):
featur