【问题标题】:Use Keras model on dataset of Numpy arrays?在 Numpy 数组的数据集上使用 Keras 模型?
【发布时间】:2021-01-18 05:20:01
【问题描述】:

我正在做一个分类项目,并且有一个由 2d Numpy 数组组成的数据集(我们称它们为负数和正数)。

我通过简单地使用目录中的图像数据生成器熟悉Keras分类,但我不知道如何处理Numpy数组。

请指导我下一步应该做什么。

谢谢

【问题讨论】:

  • 欢迎来到 StackOverflow。请查看提出问题的指南。 stackoverflow.com/help/how-to-ask。您需要提供更多关于问题所在的详细信息,包括您迄今为止尝试过的方法。
  • 你可以直接将 numpy 数组提供给你的神经网络
  • 将 numpy 数组输入 NN 时,如何指定标签?是按数组名称还是它们的标签在单独的数组中?

标签: numpy tensorflow keras tf.keras


【解决方案1】:

您要做的就是将数组提供给model.fit。最好的方法是构建一个生成器,它将批量提供数据数组样本和标签数组样本。 我将假设 X_array 包含您的训练样本,而 y_array 包含您的标签样本。 我尚未对其进行测试,但这里是创建生成器的一个尝试。

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_test_split 将数据集分为训练、测试和有效数据集,那么您可以实例化三个生成器的形式

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 函数更改为具有参数、数组路径和 batch_size。然后在 gen 函数的循环中从目录中读取 batch_size 个数组来创建 X_array 和 y_array。正如他们在学校里常说的那样,留给学生作为练习!祝你好运

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-11
    • 2021-05-17
    • 2021-08-12
    • 2021-12-27
    • 1970-01-01
    • 2021-12-26
    • 2019-09-17
    • 1970-01-01
    相关资源
    最近更新 更多