用于训练文件的读取。
efl .data .DataIO (
data_base_dir , batch_size , worker_idx , worker_num , prefetch = 1 ,
num_epochs = 1 , save_interval = 100 , drop_remainder = False , name = 'dataio'
)
参数列表
data_base_dir
string
数据集的根目录。
batch_size
int
batch大小。
worker_idx
int
当前worker的id。
worker_num
int
总worker数量。
prefetch
int
预取的样本数量。
num_epochs
int
epoch数量。
save_interval
int
每训练save_interval
步,保存一次序列化后的reader state。reader state由block id和sample index两部分组成,前者指定读取的block文件,后者指定读取的起始样本在该block文件中的偏移。
drop_remainer
bool
False
表示丢弃最后一个不满的batch,True
则保留。
name
string
该DataIO
的名字。
add_file_node (
file_node
)
参数
file_node
string
data_base_dir
下的子目录。
功能及返回值
None
DataIO
新增一个准备读取的文件所在的子目录。若不指定,则读取全部子目录下的文件。无返回值。
add_file_nodes (
file_nodes
)
参数
file_nodes
list
包含若干data_base_dir
下子目录的列表。
功能及返回值
None
DataIO
新增若干准备读取的文件所在的子目录。若不指定,则读取全部子目录下的文件。无返回值。
fixedlen_feature (
name , dim , dtype = tf .float32
)
参数
name
string
该定长特征在TFRecord存储中对应的名字。
dim
int
该定长特征对应tensor中的元素个数。
dtype
tf.dtypes.Dtype
该定长特征的数据类型。
功能及返回值
None
定义一个定长的特征。无返回值。
varlen_feature (
name , dtype = tf .int64
)
参数
name
string
该变长特征在TFRecord存储中对应的名字。
dtype
tf.dtypes.Dtype
该变长特征的数据类型。
功能及返回值
None
定义一个变长特征。无返回值。
restore_from_reader_state_op
restore_from_reader_state_op (
reader_state
)
参数
reader_state
string
reader state序列化后的字符串。
功能及返回值
op
返回一个根据reader_state
加载checkpoint的op
。
功能及返回值
dict
获取一个batch的训练数据。key为特征名,value为特征对应的数据。
功能及返回值
tf.data.Dataset
初始化dataset,返回一个tf.data.Dataset
。
参数
sess
tf.Session
一个tf会话。
功能及返回值
None
在sess
中运行一个初始化DataIO迭代器的op。无返回值。
功能及返回值
DataIOHook
获取该DataIO
对应的Hook。
efl.FederalDataIO
继承自efl.DataIO
。用于联邦学习中训练文件的读取。
efl .data .DataIO (
data_base_dir , batch_size , communicator , role , worker_idx , worker_num ,
prefetch = 1 , num_epochs = 1 , save_interval = 100 , drop_remainder = False ,
data_mode = 'data-join' , name = 'dataio'
)
参数列表
data_base_dir
string
数据集的根目录。
batch_size
int
batch大小。
communicator
efl.Communicator
联邦学习中双方通信用到的Communicator
。
role
string
联邦学习角色,有'follower'
和'leader'
。
worker_idx
int
当前worker的id。
worker_num
int
总worker数量。
prefetch
int
预取的样本数量。
num_epochs
int
epoch数量。
save_interval
int
每训练save_interval
步,保存一次序列化后的reader state。reader state由block id和sample index两部分组成,前者指定读取的block文件,后者指定读取的起始样本在该block文件中的偏移。
drop_remainer
bool
False
表示丢弃最后一个不满的batch,True
则保留。
data_mode
string
有local
和data-join
两个选项。当你使用我们联邦学习框架中的数据求交框架生成数据时,请使用data-join
选项。当你使用自己生成的本地数据时,请使用local
选项。需要注意,若使用本地生成的数据,follower与leader双方的文件名必须一致。
name
string
该FederalDataIO
的名字。
与efl.DataIO
相比无新增方法。
efl .Sample (
features , columns
)
参数列表
features
dict
样本原始数据,key是特征名,value是该特征名对应的数据。
columns
dict
features
经过转换后的模型输入数据,key是列名,value是该列对应的tf.feature_column
列表。
columns
定义了features
将以何种组织形式输入到模型中。
比如现在存在如下数据:
姓名
年龄
国籍
性别
张三
20
中国
男
Alice
20
美国
女
我们希望利用姓名,年龄和国籍判断一个人的性别,那么就可以如下定义features
:
features = {
'name' : tf .constant (['张三' , 'Alice' ], dtype = tf .string ),
'age' : tf .constant ([20 , 20 ], dtype = tf .int64 ),
'nationality' : tf .constant (['中国' , '美国' ], dtype = tf .string ),
'gender' : tf .constant ([1 , 0 ], dtype = tf .int64 )
}
如果你希望每个batch训练的数据不同,那么可以使用tf.Dataset
或框架中提供的efl.DataIO
。
输入的features
将在Sample
中根据columns
的定义做相应的处理。columns
的value是一个列表,这就意味着你可以将数据中的多个特征组合成一个特征列,根据features
可以如下定义columns
:
columns = {
'dense' : [tf .feature_column .numeric_column ('name' , 1 )],
'embedding' : [
tf .feature_column .embedding_column (
tf .feature_column .categorical_column_with_identity ('name' , 1000000 ),
dimension = 10 , combiner = 'mean' ),
tf .feature_column .embedding_column (
tf .feature_column .categorical_column_with_identity ('nationality' , 200 ),
dimension = 10 , combiner = 'mean' )]
'label' : [tf .feature_column .numeric_column ('gender' , 1 )]
}
注意:在你定义tf.feature_column
时,传入的key
应与features
的key对应。
sample = efl .Sample (features , columns )
如此上述数据在Sample
中就将组织为如下形式:
dense
embedding
label
20
tf.Tensor(shape=[20,])
1
20
tf.Tensor(shape=[20,])
0
通过sample['dense']
的方式就可以取出转换后的数据,然后即可将其输入到模型中。
属性列表
features
dict
样本原始数据。
功能及返回值
dict
以字典的方式取出features
经columns
转换后的数据。
参数
fgrps
dict
key是列名,value是列对应的数据。
功能及返回值
efl.Sample
该方法将返回一个根据当前Sample
拷贝创建的新Sample
,并利用fgrpc
替换新Sample
中转换后的数据。
set_transformed_feature_groups
set_transformed_feature_groups (
fgrps
)
参数
fgrps
dict
key是列名,value是列对应的数据。
功能及返回值
None
该方法将用fgrps
直接替换efl.Sample
中通过features
导入并由columns
转换后生成的数据。无返回值。
功能及返回值
list
该方法等价于to_dict().items()
。
功能及返回值
list
返回在开始每个step的训练前需要运行的所有op
。
FederalSample
继承自Sample
。
efl .FederalSample (
features , columns , federal_role , communicator ,
sample_id_name = None , verify_id = True , name = 'sample'
)
参数列表
features
dict
样本数据,key是特征名,value是该特征名对应的数据。
columns
dict
模型输入数据,key是列名,value是该列对应的tf.feature_column
列表。columns
定义了features
将以何种组织形式输入到模型中。
federal_role
string
在联邦学习中扮演的角色,有'follower'
和'leader'
。
communicator
efl.Communicator
联邦双方通信使用的Communicator
。
sample_id_name
string
sample_id
对应的原始数据中的特征名。
verify_id
bool
是否校验联邦双方样本的sample_id
一致性。
name
string
该FederalSample
的名字。
注意:若verify_id=True
,则原始数据features
中需要有一个特征表示sample_id
,该特征在双方构造的FederalSample
中都应存在且一致。
属性列表
features
dict
样本原始数据。
功能及返回值
op
返回一个检查联邦双方数据sample_id一致性的op。
efl.data.FederalDataset
继承自tf.data.Dataset
。
efl .data .FederalDataset (
filenames , block_ids = None , sample_index = 0 ,
compression_type = '' , buffer_size = 256 * 1024
)
参数列表
filenames
tf.Tensor
string
类型的Tensor
,该数据集包含的所有文件名包含路径。
block_ids
tf.Tensor
string
类型的Tensor
,该数据集包含的所有block文件。若为None
则等于filenames
。
sample_index
int
起始block中起始样本对应的偏移量。
compression_type
string
数据中string
类型数据的压缩格式。''
表示无压缩,'ZLIB'
和'GZIP'
分别代表两种压缩格式。
buffer_size
int
读缓冲区的大小,单位字节。0表示无缓冲区。
与tf.data.Dataset
相比无新增方法。