想了解自定义Keras数据生成器,产量高的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于keras自定义数据集的相关问题,此外,我们还将为您介绍关于c++随机数据生成器、casual——基于
想了解自定义Keras数据生成器,产量高的新动态吗?本文将为您提供详细的信息,我们还将为您解答关于keras自定义数据集的相关问题,此外,我们还将为您介绍关于c++随机数据生成器、casual —— 基于 JavaScript 的伪数据生成器、Data-Processer —— 模拟数据生成器、keras 中使用自定义生成器和 ImageDataGenerator 错误的两个标签的新知识。
本文目录一览:- 自定义Keras数据生成器,产量高(keras自定义数据集)
- c++随机数据生成器
- casual —— 基于 JavaScript 的伪数据生成器
- Data-Processer —— 模拟数据生成器
- keras 中使用自定义生成器和 ImageDataGenerator 错误的两个标签
自定义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++随机数据生成器
#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 属性作为生成器,不需要调用函数方法。
Data-Processer —— 模拟数据生成器
它是一个模拟数据生成器。我们在测试过程中,产生完整、全面的真实数据可能比较困难。我们可以根据需求,创建对应的模版和词典,利用数据模拟生成器生成我们需要的模拟数据。
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 错误的两个标签的相关知识,请在本站进行查询。
本文标签: