Tensorflow 如何从3台Keras发电机中生产1个小批量

Tensorflow 如何从3台Keras发电机中生产1个小批量,tensorflow,machine-learning,neural-network,keras,convolutional-neural-network,Tensorflow,Machine Learning,Neural Network,Keras,Convolutional Neural Network,我正在训练一个CNN,我有3个数据源。换句话说,我有3个包含图像的文件夹,我需要在每个训练步骤中从每个文件夹中拍摄一张图像 我制作了以下发电机: def发生器三个IMG(索引,批次大小=1): anchor\u paths=[r'C:\Users\sinthes\Desktop\AI\u anaconda\face\u recognition\dataset\train\E\anchor', r'C:\Users\sinthes\Desktop\AI\u anaconda\face\u reco

我正在训练一个CNN,我有3个数据源。换句话说,我有3个包含图像的文件夹,我需要在每个训练步骤中从每个文件夹中拍摄一张图像

我制作了以下发电机:

def发生器三个IMG(索引,批次大小=1):
anchor\u paths=[r'C:\Users\sinthes\Desktop\AI\u anaconda\face\u recognition\dataset\train\E\anchor',
r'C:\Users\sinthes\Desktop\AI\u anaconda\face\u recognition\dataset\train\T\Anchor']
正路径=[r'C:\Users\sinthes\Desktop\AI\u anaconda\face\u recognition\dataset\train\E\positive',
r'C:\Users\sinthes\Desktop\AI\u anaconda\face\u recognition\dataset\train\T\Positive']
负路径=[r'C:\Users\sinthes\Desktop\AI\u anaconda\face\u recognition\dataset\train\E\negative',
r'C:\Users\sinthes\Desktop\AI\u anaconda\face\u recognition\dataset\train\T\Negative']
generator1=ImageDataGenerator()
generator2=ImageDataGenerator()
generator3=ImageDataGenerator()
anchor\u train\u batches=generator1.flow\u from\u目录(anchor\u路径[index],target\u size=(224224,224),batch\u size=batch\u size)
正\u序列\u批次=生成器2.来自\u目录的流(正\u路径[索引],目标\u大小=(224224,224),批次\u大小=批次\u大小)
负\u序列\u批次=生成器3.来自\u目录的流(负\u路径[索引],目标\u大小=(224224,224),批次\u大小=批次\u大小)
尽管如此:
anchor\u imgs,anchor\u标签=anchor\u train\u批次。下一步()
阳性标签=阳性批次。下一步()
阴性标签=阴性批次。下一步()
输入\u imgs=np.append(锚定\u imgs,正\u imgs,轴=0)
input\u imgs=np.append(input\u imgs,negative\u imgs,axis=0)
labels=np.append(锚定标签、正标签、轴=0)
标签=np.append(标签,负标签,轴=0)
产量输入、IMG、标签
所以,input_imgs是一个(322243)维numpy数组。 标签是标签的数组;在这种情况下,数组中将有3个标签

然后,我尝试按照以下方式对其进行培训:

model.fit_发生器(发生器三个IMG(0),
步数(每个历元=23,历元=1,详细=2)
但它无法训练。Jupyter笔记本因发出以下消息而崩溃:

内核似乎已死亡。它将自动重新启动。
我在这里该怎么办?尝试构造一个小批量,用3个不同的Keras生成器从不同的目录获取其图像,这是错误的吗


提前谢谢你

你为什么不像我们其他人一样把文件复制到组合文件夹中呢?您似乎正在为一个不需要存在的问题设计解决方案。

您可能是对的。我最初尝试使用三重丢失方法来解决人脸验证/识别问题。当我训练暹罗网络时,我有3个输入流(用于锚定、正片、负片图像)。但是当我以后想使用我的模型进行预测时,我没有3个输入,只有1个。这里描述的问题是:你对此有什么评论吗?@edn你不能用一个变分自动编码器进行面部识别吗?你能再解释一下什么是变分编码器吗?@edn它就像一个有线电视新闻网,但这一个在再现它之前接收一个输入并存储一个潜在的信息。这样,网络就可以将输入内容与经过训练的图像进行比较并打分。请阅读“机器学习很有趣!第4部分:具有深度学习功能的现代人脸识别”