Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tensorflow 多输入深度学习中的平均层_Tensorflow_Machine Learning_Keras_Neural Network_Deep Learning - Fatal编程技术网

Tensorflow 多输入深度学习中的平均层

Tensorflow 多输入深度学习中的平均层,tensorflow,machine-learning,keras,neural-network,deep-learning,Tensorflow,Machine Learning,Keras,Neural Network,Deep Learning,我正在Keras中创建一个用于图像分类的多输入卷积神经网络(CNN)模型,该模型获取两幅图像,并给出一个输出,即两幅图像的类别 我有两个数据集:type1和type2,每个数据集包含相同的类。模型应该从Type1数据集中获取一个图像,从Type2数据集中获取一个图像,然后将这些图像分类为一个类(ClassA或ClassB或------) 我想创建一个预测两幅图像的模型,然后计算预测的平均值,类似于下图: 如何创建此模型? 如何在fit_generator中创建发电机?选项1-两侧都是相同的型号

我正在Keras中创建一个用于图像分类的多输入卷积神经网络(CNN)模型,该模型获取两幅图像,并给出一个输出,即两幅图像的类别

我有两个数据集:type1和type2,每个数据集包含相同的类。模型应该从Type1数据集中获取一个图像,从Type2数据集中获取一个图像,然后将这些图像分类为一个类(ClassA或ClassB或------)

我想创建一个预测两幅图像的模型,然后计算预测的平均值,类似于下图:

如何创建此模型? 如何在fit_generator中创建发电机?

选项1-两侧都是相同的型号,只是使用不同的输入 假设您有一个称为
predModel

创建两个输入张量:

input1 = Input(shape)   
input2 = Input(shape)
获取每个输入的输出:

pred1 = predModel(input1)
pred2 = predModel(input2)   
平均产出:

output = Average()([pred1,pred2])
output = Average()([pred1,pred2])
创建最终模型:

model = Model([input1,input2], output)
model = Model([input1,input2], output)
选项2-两侧都是相似的型号,但使用不同的重量 基本上与上面相同,但为每一侧分别创建层

def createCommonPart(inputTensor):
    out = ZeroPadding2D(...)(inputTensor)
    out = Conv2D(...)(out)

    ...
    out = Flatten()(out)
    return Dense(...)(out)
进行两个输入:

input1 = Input(shape)   
input2 = Input(shape)
获得两个输出:

pred1 = createCommonPart(input1)
pred2 = createCommonPart(input2)
平均产出:

output = Average()([pred1,pred2])
output = Average()([pred1,pred2])
创建最终模型:

model = Model([input1,input2], output)
model = Model([input1,input2], output)
发电机 任何产生y
[xTrain1,xTrain2]的东西

您可以这样创建一个:

def generator(files1,files2, batch_size):

    while True: #must be infinite

        for i in range(len(files1)//batch_size)):
            bStart = i*batch_size
            bEnd = bStart+batch_size

            x1 = loadImagesSomehow(files1[bStart:bEnd])
            x2 = loadImagesSomehow(files2[bStart:bEnd])
            y = loadPredictionsSomeHow(forSamples[bStart:bEnd])

            yield [x1,x2], y
您还可以以类似的方式实现
keras.utils.Sequence

class gen(Sequence):
    def __init__(self, files1, files2, batchSize):
        self.files1 = files1
        self.files2 = files2
        self.batchSize = batchSize

    def __len__(self):
        return self.len(files1) // self.batchSize

    def __getitem__(self,i):

        bStart = i*self.batchSize
        bEnd = bStart+self.batchSize 

        x1 = loadImagesSomehow(files1[bStart:bEnd])
        x2 = loadImagesSomehow(files2[bStart:bEnd])
        y = loadPredictionsSomeHow(forSamples[bStart:bEnd])

        return [x1,x2], y

非常感谢你的回复。。如何在
fit\u生成器中创建
fit\u生成器
并确定
generator
(生成器,步数/epoch=None,epoch=1,verbose=1)
?请参见新答案。