GVKun编程网logo

自定义Keras数据生成器,产量高(keras自定义数据集)

11

想了解自定义Keras数据生成器,产量高的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于keras自定义数据集的相关问题,此外,我们还将为您介绍关于c++随机数据生成器、casual——基于

想了解自定义Keras数据生成器,产量高的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于keras自定义数据集的相关问题,此外,我们还将为您介绍关于c++随机数据生成器、casual —— 基于 JavaScript 的伪数据生成器、Data-Processer —— 模拟数据生成器、keras 中使用自定义生成器和 ImageDataGenerator 错误的两个标签的新知识。

本文目录一览:

自定义Keras数据生成器,产量高(keras自定义数据集)

自定义Keras数据生成器,产量高(keras自定义数据集)

我正在尝试创建一个自定义数据生成器,但不知道如何yield__getitem__方法内部将函数与无限循环结合在一起。

编辑 :答案后,我意识到我正在使用的代码是Sequence不需要yield声明的。

目前,我正在返回多张图片,并附上一条return声明:

class DataGenerator(tensorflow.keras.utils.Sequence):    def __init__(self, files, labels, batch_size=32, shuffle=True, random_state=42):        ''Initialization''        self.files = files        self.labels = labels        self.batch_size = batch_size        self.shuffle = shuffle        self.random_state = random_state        self.on_epoch_end()    def __len__(self):        return int(np.floor(len(self.files) / self.batch_size))    def __getitem__(self, index):        # Generate indexes of the batch        indexes = self.indexes[index * self.batch_size:(index + 1) * self.batch_size]        files_batch = [self.files[k] for k in indexes]        y = [self.labels[k] for k in indexes]        # Generate data        x = self.__data_generation(files_batch)        return x, y    def on_epoch_end(self):        ''Updates indexes after each epoch''        self.indexes = np.arange(len(self.files))        if self.shuffle == True:            np.random.seed(self.random_state)            np.random.shuffle(self.indexes)    def __data_generation(self, files):        imgs = []        for img_file in files:            img = cv2.imread(img_file, -1)            ###############            # Augment image            ###############            imgs.append(img)        return imgs

在本文中,我看到了yield它在无限循环中使用的情况。我不太了解这种语法。循环如何逃逸?

答案1

小编典典

您正在使用Sequence API,该API与普通生成器的工作原理有所不同。在生成器函数中,您将使用yield关键字在循环内执行迭代whileTrue:,因此,每次Keras调用生成器时,它都会获取一批数据,并自动环绕数据的末尾。

但是在序列中,函数有一个index参数__getitem__,因此不需要迭代或不需要迭代yield,这由Keras为您执行。这样可以使序列可以使用多重处理并行运行,而这对于旧的生成器函数是不可能的。

因此,您以正确的方式行事,无需任何更改。

c++随机数据生成器

c++随机数据生成器

#include<iostream>
#include<time.h>
#include<cstdio>
#include<stdlib.h>
using namespace std;
int main()
{
 freopen("random.txt","w",stdout);
 long long a,b,n,cou;//cou:数据个数; 
 cin>>a>>b>>cou;
 srand(time(NULL));
 for(long long i=1;i<=cou;i++)
 {
  n=rand()%(b-a+1)+a;
  cout<<n<<'' '';
 }
 return 0;
}

casual —— 基于 JavaScript 的伪数据生成器

casual —— 基于 JavaScript 的伪数据生成器

Casual 使用 JavaScript 属性作为生成器,不需要调用函数方法。

Data-Processer —— 模拟数据生成器

Data-Processer —— 模拟数据生成器

它是一个模拟数据生成器。我们在测试过程中,产生完整、全面的真实数据可能比较困难。我们可以根据需求,创建对应的模版和词典,利用数据模拟生成器生成我们需要的模拟数据。

keras 中使用自定义生成器和 ImageDataGenerator 错误的两个标签

keras 中使用自定义生成器和 ImageDataGenerator 错误的两个标签

如何解决keras 中使用自定义生成器和 ImageDataGenerator 错误的两个标签?

我需要使用两个输出标签进行图像分类。 ImageDataGenerator 不允许多个输出,所以我尝试了以下自定义生成器:

def make_multi_output_flow(image_gen,X,y_list,batch_size):
    y_item_0 = y_list[0]
    y_indices = np.arange(y_item_0.shape[0])
    orig_flow = image_gen.flow(X,y=y_indices,batch_size=batch_size)

    while True:
        (X,y_next_i) = next(orig_flow)
        y_next = [ y_item[y_next_i] for y_item in y_list ]
        yield X,y_next

y_train = [y_train_1,y_train_2]
multi_output_flow = make_multi_output_flow(
    image_data_generator,X_train,y_train,batch_size)

问题是当我尝试拟合模型时收到以下错误消息:

AttributeError: ''tuple'' object has no attribute ''shape''

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

今天的关于自定义Keras数据生成器,产量高keras自定义数据集的分享已经结束,谢谢您的关注,如果想了解更多关于c++随机数据生成器、casual —— 基于 JavaScript 的伪数据生成器、Data-Processer —— 模拟数据生成器、keras 中使用自定义生成器和 ImageDataGenerator 错误的两个标签的相关知识,请在本站进行查询。

本文标签: