tensorflow2数据读取P1: numpy array

tensorflow2的model.fit方法支持输入的数据类型有哪些呢?

可以通过help方法或者查阅API文档进行了解。这里使用help方法进行查看。
在这里插入图片描述
x和y代表fit方法的输入特征和标签数据。如截图所示,输入的特征(即x)支持的数据类型包含

  • numpy array(或numpy array组成的列表,适用于模型有多个输入的情况)

  • tensor(或tensor组成的列表,适用于模型有多个输入的情况)

  • 字典,其值是numpy array或tensor类型

  • tf.data创建的dataset,这种dataset必须返回长度为2或3的元组。当长度为2时,元组必须是(特征,标签)形式。当长度为3时,元组必须是(特征,标签,样本权重)形式。

  • 生成器类型,或者keras.utils.Sequence。它们每次必须返回长度为2或3的元组,具体形式参考tf.data中的解释。

    输入的标签(即y)支持的数据类型和x类似,但需要注意2点

  • y的数据类型需要和x保持一致

  • 当x是dataset或者生成器类型,就不能指定y。因为这两种类型在x中就可以获取到标签。
    tensorflow2数据读取P1: numpy array_第1张图片

输入为numpy array

这种输入比较常见于将一些提取的特征数据和标签存储在一个csv(或txt)文件中。对文件进行解析,获取numpy array类型的数据。这种方式比较适合数据量较少的情况,操作起来比较简单快捷。
举个栗子
假设特征和标签存储在如下图所示的csv文件中
tensorflow2数据读取P1: numpy array_第2张图片
可以使用pandas读取这个csv文件,获得特征和标签。参考如下代码

import pandas as pd
filename = r'my_traindata.csv'
df = pd.read_csv(filename, header=0, index_col=False) # header=0表示csv文件的第一行作为列名称, index_col=False表示不使用第1列作为行名称
uselist = ['fea1','fea2','fea3','fea4','fea5']
labellist = ['label']
features = df[uselist].values # 使用.values将数据转换成np.array类型,如果直接使用pd.Series和pd.DataFrame类型作为输入,训练时可能会报warning
labels = df[labellist].values

这样获取到np.array类型的训练特征和标签,可以直接送入model.fit()进行训练。例如

def create_model():
    input = tf.keras.Input(shape=(5,))
    x = tf.keras.layers.Dense(10,kernel_initializer='normal',activation='relu')(input)
    x = tf.keras.layers.Dense(5,kernel_initializer='normal',activation='relu')(x)
    output = tf.keras.layers.Dense(1,kernel_initializer='normal',activation='sigmoid')(x)
    model = tf.keras.Model(inputs=input, outputs=output)
    return model
    
# 创建一个模型
mymodel = create_model()
# 编译一下
mymodel.compile(
    optimizer = tf.keras.optimizers.Adam(0.01),
    loss = 'binary_crossentropy'
) 
# 送入数据进行训练
mymodel.fit(features,labels,epochs=10)

完整的代码参考
https://gitee.com/xxjdxmt/learning/tree/master
tensorflow2数据读取P1.ipynb

你可能感兴趣的:(tensorflow2使用,numpy,tensorflow,python)