Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.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

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
Python 如何将值与图像一起用作训练Keras图像分类器的输入?_Python_Tensorflow_Keras_Neural Network_Deep Learning - Fatal编程技术网

Python 如何将值与图像一起用作训练Keras图像分类器的输入?

Python 如何将值与图像一起用作训练Keras图像分类器的输入?,python,tensorflow,keras,neural-network,deep-learning,Python,Tensorflow,Keras,Neural Network,Deep Learning,我相信这是我在这里的第一个问题 我对神经网络很陌生。我刚开始在Python上做一个研究,该研究旨在观察有糖尿病风险的患者的血糖水平,并根据他们患糖尿病的风险将他们从1到3进行排名。1为高风险,3为低风险 现在,我有大约110张以前由医生排列的图表(42张风险1,51张风险2,10张风险3)。我随机选取每组的25%作为测试集,将其余部分作为训练,然后交给Keras学习 它很好用。这是我的密码: 打印(“卷积”) add(卷积2D(32,3,3,输入_形状=(64,64,3),激活='relu'))

我相信这是我在这里的第一个问题

我对神经网络很陌生。我刚开始在Python上做一个研究,该研究旨在观察有糖尿病风险的患者的血糖水平,并根据他们患糖尿病的风险将他们从1到3进行排名。1为高风险,3为低风险

现在,我有大约110张以前由医生排列的图表(42张风险1,51张风险2,10张风险3)。我随机选取每组的25%作为测试集,将其余部分作为训练,然后交给Keras学习

它很好用。这是我的密码:

打印(“卷积”)
add(卷积2D(32,3,3,输入_形状=(64,64,3),激活='relu'))
打印(“池”)
add(MaxPoolig2D(池大小=(2,2)))
打印(“展平”)
添加(展平())
打印(“连接”)
添加(密集(激活='relu',单位=128))
添加(密集(激活='softmax',单位=3))
印刷(“CNN”)
compile(优化器='adam',loss='categorical_crossentropy',metrics=['accurity'])
打印(“生成图像”)
从keras.preprocessing.image导入ImageDataGenerator
列车_datagen=ImageDataGenerator()
test_datagen=ImageDataGenerator()
打印(“设置集”)
training\u set=来自\u目录的train\u datagen.flow\u(
“数据集/序列集”,
目标_大小=(64,64),
批次大小=批次,
class_mode='classifical')
test_set=test_datagen.flow_from_目录(
“数据集/测试集”,
目标_大小=(64,64),
批次大小=批次,
class_mode='classifical')
打印(“培训nn…”)
从IPython.display导入显示
从PIL导入图像
fit_发生器(
训练组,
每历元步数=每历元步数,
时代,
验证数据=测试集,
验证(步骤=验证步骤)
然而,训练后的准确度不会超过0.4。现在,我知道我有一个相对较小的样本来训练神经网络,但我目前无法获得更多患者的信息。然而,我可以从这些患者那里获得人口统计数据,比如体重、身高和年龄

基本上,我想以某种方式包括每位患者的体重、身高和年龄,以及显示其血糖水平的图表。因此,我的程序知道在做出判断时要考虑这些信息。

我在网上搜索时没有找到任何类似的东西,尽管这可能是因为我对这件事知之甚少。我该怎么办


谢谢你的时间。

如果我必须做这样的事情,一旦图像特征和数字特征具有相同的形式——特征向量,我就会将它们连接起来。为此,您可以将网络的卷积部分视为特征提取器,该提取器在最后一个池层之后转变为特征列表,即它的形状类似于[batch_size,1,1,N]。在这一点上,您可以很容易地附加/连接常规数字特征,然后再将它们输入到密集层中

我会留意以下几件事:

  • 确保数值和卷积特征来自相同的分布,即BatchNorm应用于这两个分布
  • 确保它们的大小大致相同,即,如果您有2048个conv功能,而只有5个数字功能,则可能无法正常工作

您可以从中获得更多灵感。

首先,您可以使用小型深度网络,因此您的数据必须超过100个实例。因此,我建议搜索“数据扩充”以了解如何增加数据。第二,虽然你几乎没有训练网络的数据,但我认为测试数据的10%或更少就足够了。最后,为了使用其他特征进行训练,您可以通过卷积网络提取图像的特征,然后将其与其他特征连接起来,训练一个更简单的网络进行最终分类