在Numpy数组的数据集上使用Keras模型?

在Numpy数组的数据集上使用Keras模型?,numpy,tensorflow,keras,tf.keras,Numpy,Tensorflow,Keras,Tf.keras,我正在从事一个分类项目,有一个由2d Numpy数组组成的数据集(我们称之为负数组和正数组) 我很熟悉Keras分类,只需使用目录中的图像数据生成器,但我不知道如何处理Numpy数组 请告诉我下一步该做什么 谢谢您需要做的是提供model.fit的阵列。最好的方法是构建一个生成器,该生成器将提供数据数组样本并成批标记数组样本。 我假设X_数组包含您的训练样本,y_数组包含您的标签样本。 我还没有测试它,但这里是一个在创建一个发电机射击 class data_gen(): def __in

我正在从事一个分类项目,有一个由2d Numpy数组组成的数据集(我们称之为负数组和正数组)

我很熟悉Keras分类,只需使用目录中的图像数据生成器,但我不知道如何处理Numpy数组

请告诉我下一步该做什么


谢谢

您需要做的是提供model.fit的阵列。最好的方法是构建一个生成器,该生成器将提供数据数组样本并成批标记数组样本。 我假设X_数组包含您的训练样本,y_数组包含您的标签样本。 我还没有测试它,但这里是一个在创建一个发电机射击

class data_gen():
    def __init__(self, X_array, y_array, batch_size):
        self.batch_index=0
        self.X_array=X_array
        self.y_array=y_array
        self.batch_size=batch_size         
        self.data_array=np.zeros((self.X_array.shape))
        self.label_array=np.zeros(self.y_array.shape)        
        
    def gen(self):
        length=self.X_array.shape[0] # number of samples
        start=self.batch_index * self.batch_size # set start value of iteration
        end=start + self.batch_size   # set end value of iteration yield 1 batch of data
        for i in range(start, end):
            j=i % length
            self.data_array[j]=(self.X_array[j]) 
            self.label_array[j]=(self.y_array[j])
        self.batch_index=self.batch_index +1
        yield (self.data_array,self.label_array )
要测试它,请尝试下面的代码

batch_size = 3 #  set what ever batch size you wish
my_gen=data_gen(X_array, y_array, batch_size)
data, labels=next(my_gen.gen())
print (data.shape, labels.shape)
您可以像使用ImageDataGenerator一样使用my_gen.gen()。 如果您使用sklearn train\u test\u split将数据集分为train、test和valid数据集,那么您可以实例化表单的三个生成器

train_gen=data_gen(X_train, y_train, train_batch_size)
test_gen=data_gen(X_test, y_test, test_baych_size)
valid_gen=data_gen(X_valid, y_valid, valid_batch_size)

修改生成器以成批读取目录中的数据不需要太多,这样您就不必将所有内容加载到内存中并冒OOM(内存不足)错误的风险。将init函数更改为具有参数、数组路径和批大小。然后在gen函数的循环中从目录中读取批量大小的数组数,以创建X_数组和y_数组。正如他们在学校常说的那样,这是留给学生的一种锻炼!祝你好运

欢迎来到StackOverflow。请看一下提问指南。您需要提供有关问题所在的更多详细信息,包括您迄今为止尝试的内容。您可以直接将numpy数组馈送到NN。将numpy数组馈送到NN时,如何指定标签?它是按数组名称排列的,还是它们的标签在一个单独的数组中?