Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/293.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
Python 对功能性keras模型的多个输入设置多个类别的格式,并将其提供给模型_Python_Tensorflow_Keras - Fatal编程技术网

Python 对功能性keras模型的多个输入设置多个类别的格式,并将其提供给模型

Python 对功能性keras模型的多个输入设置多个类别的格式,并将其提供给模型,python,tensorflow,keras,Python,Tensorflow,Keras,我不知道如何正确地将训练数据提供给功能性的keras模型。我有两种输入类型:图像数据和浮点数字,每个数字属于一个图像。该数据分为6类。我需要如何格式化我的输入数据,以及我需要如何在我的keras网络中定义它? 图像数据由CNN分析,然后应与浮点数连接。然后,使用三个致密层进行分类。似乎没有一个例子或教程与我的问题类似 两个独立的输入: imageInput = Input(image_shape) #often, image_shape is (pixelsX, pixelsY, channel

我不知道如何正确地将训练数据提供给功能性的keras模型。我有两种输入类型:图像数据和浮点数字,每个数字属于一个图像。该数据分为6类。我需要如何格式化我的输入数据,以及我需要如何在我的keras网络中定义它? 图像数据由CNN分析,然后应与浮点数连接。然后,使用三个致密层进行分类。似乎没有一个例子或教程与我的问题类似

两个独立的输入:

imageInput = Input(image_shape) #often, image_shape is (pixelsX, pixelsY, channels)    
floatInput = Input(float_shape) #if one number per image, shape is: (1,)
卷积部分:

convOut = SomeConvLayer(...)(imageInput)
convOut = SomeConvLayer(...)(convOut)
#...
convOut = SomeConvLayer(...)(convOut)
如有必要,对其他输入执行类似操作

加入两个分支机构:

#Please make sure you use compatible shapes
#You should probably not have spatial dimensions anymore at this point
#Probably some kind of GloobalPooling:
convOut = GlobalMaxPooling2D()(convOut)

#concatenate the values:
joinedOut = Concatenate()([convOut,floatInput]) 
    #or some floatOut if there were previous layers in the float side
使用连接的输出执行更多操作:

joinedOut = SomeStuff(...)(joinedOut)
joinedOut = Dense(6, ...)(joinedOut)
使用两个输入创建模型:

model = Model([imageInput,floatInput], joinedOut)
培训对象:

model.fit([X_images, X_floats], classes, ...)
其中,
classes
是一个“一个热编码”张量,包含每个图像的正确类


然而,并没有“一个正确的解决方案”。你可以尝试很多不同的东西,比如在卷积的中间添加“数字”,或者乘以它,或者在你设法以某种方式连接这些值之后创造更多的卷积。这就是艺术

输入数据 输入和输出数据应为numpy数组

阵列的形状应为:

- Image input: `(number_of_images, side1, side2, channels)`    
- Floats input: `(number_of_images, number_of_floats_per_image)`    
- Outputs: `(number_of_images, number_of_classes)`   

Keras将从这些形状中了解所有必要的信息,所有数组中的第0行将是图像0,第1行将是图像1,依此类推。

谢谢。我有很多,但这是我遇到的问题:model.fit([X_图像,X_浮动],类,…)。keras如何知道输入数据的位置,以及输入的结构(文件格式、特定文件夹结构?)。不知何故,我需要告诉keras,它需要六个类,以及哪些图像属于哪个类。除此之外,我需要告诉他,什么浮点值属于什么图像,不是吗?换句话说:X_图像和X_浮动需要如何定义?非常感谢!这真的很有帮助。如果你碰巧在德国,我给你拿瓶啤酒;)还有一个问题:如果我理解正确,你不会告诉Keras什么输入图像/浮点属于什么类,对吗?为什么不呢?我已经标记了数据,所以我不应该向他提供有关图像标签的信息吗?或者这是存储在“classes”参数中的?这是存储在
fit
中的
classes
变量中的。这是答案最后一节中提到的
输出我来自巴西:D ---如果你认为这回答了你的问题,请把它标记为:“好的,所以如果我有1200个图像(当然是1200个浮点数),每一个类有200个,那么输入将是(1200,256256,3)和(1200,1)。输出或“类”将是(200,6)--是的,标记为已解决!再次感谢。输出将是
(1200,6)
。每幅图像6个类。