Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.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_Image Processing_Keras_Deep Learning_Reinforcement Learning - Fatal编程技术网

Python 如何以图像和分离值作为输入来训练Keras模型?混合输入

Python 如何以图像和分离值作为输入来训练Keras模型?混合输入,python,image-processing,keras,deep-learning,reinforcement-learning,Python,Image Processing,Keras,Deep Learning,Reinforcement Learning,我正在为我的自主直升机构建一个强化学习代理。我的用于纯图像输入的Keras(1.0.7)模型如下所示: image\u model=Sequential() image_model.add(卷积2D(32,8,8,子样本=(4,4),输入_形状=(112215))) image_model.add(激活('relu')) image_model.add(卷积2D(64,4,4,子样本=(2,2))) image_model.add(激活('relu')) image_model.add(卷积2D

我正在为我的自主直升机构建一个强化学习代理。我的用于纯图像输入的Keras(1.0.7)模型如下所示:

image\u model=Sequential()
image_model.add(卷积2D(32,8,8,子样本=(4,4),输入_形状=(112215)))
image_model.add(激活('relu'))
image_model.add(卷积2D(64,4,4,子样本=(2,2)))
image_model.add(激活('relu'))
image_model.add(卷积2D(64,3,3,子样本=(1,1)))
image_model.add(激活('relu'))
image\u model.add(展平())
图像_模型添加(密集(512))
image_model.add(激活('relu'))
图像_模型。添加(密集(nb_动作))
image_model.add(激活('linear'))
为了正确地学习,除了纯图像(方向、直升机位置等),我还必须向模型传递一些附加值。我想我必须考虑网络体系结构的流,这些流会导致一个或多个输出层

image\u model=Sequential()
添加(卷积2D(32,8,8,子样本=(4,4),输入形状=输入形状))
image_model.add(激活('relu'))
image_model.add(卷积2D(64,4,4,子样本=(2,2)))
image_model.add(激活('relu'))
image_model.add(卷积2D(64,3,3,子样本=(1,1)))
image_model.add(激活('relu'))
image\u model.add(展平())
图像_模型添加(密集(512))
image_model.add(激活('relu'))
值\模型=顺序()
添加(展平(输入形状=值))
附加值(密度(16))
value_model.add(激活('relu'))
附加值(密度(16))
value_model.add(激活('relu'))
附加值(密度(16))
value_model.add(激活('relu'))
模型=顺序()
#以某种方式合并在一起
模型添加(密集(nb_动作))
model.add(激活('linear'))
在我的理解中,合并是为了合并图像和图像。如何将这些不同类型的输入组合在一起

编辑:这里是我对我想做的事情的尝试。我想用一个图像和一个单独的值在每个时间步培训我的代理。因为我认为I不应该在conv网络流中将单独的值与映像一起传递,所以我希望有第二个值流,然后最终将映像和值网络结合在一起

INPUT_SHAPE=(119214)
窗口长度=1
img_输入=(窗口长度,)+输入_形状
img=卷积2d(32,8,8,子样本=(4,4),激活='relu',输入形状=img\u输入)
img=卷积2d(64,4,4,子样本=(2,2),激活='relu',输入形状=img)
img=卷积2d(64,3,3,子样本=(1,1),激活='relu',输入形状=img)
img=展平(输入形状=img)
img=密集(512,激活='relu',输入形状=img)
值_输入=(1,2)
值=展平()(值\输入)
值=密集(16,激活='relu')(值)
值=密集(16,激活='relu')(值)
值=密集(16,激活='relu')(值)
动作=密集(nb_动作,激活=线性)(img)(值)
模型=模型([img\u输入,值\u输入],[actions])
img=volumion2d(32,8,8,子样本=(4,4),activation='relu',input\u shape=img\u input)
img=volumion2d(32,8,8,子样本=(4,4),activation='relu')(img\u input)
风格行不通


此外,我不知道如何在
actions=Dense(nb_actions,activation='linear')(img)(value)

中将流组合在一起,为了做到这一点,您必须使用模型类API,而不是顺序类API

不确定您在这里想要实现什么,我希望下面的代码能够帮助您

inp=Input((112215))
x=卷积2d(32,8,8,子样本=(4,4),激活='relu')(inp)
x=卷积2d(64,4,4,子样本=(2,2),激活='relu')(x)
x=卷积2d(64,3,3,子样本=(1,1),激活='relu')(x)
x=展平()(x)
x=密集(512,激活='relu')(x)
x_a=密集(nb_作用,名称='a',激活='线性')(x)
x_b=稠密(nb_类,activation='softmax',name='b')(x)
模型=模型([inp],[x_a,x_b])
compile(Adam(lr=0.001),损失=['mse','categorical_crossentropy',],度量=['accurity',],
损失重量=[0.0001,1.])#调整损失重量
模型拟合(序列专长,[序列标签a,序列标签b],批量大小=批量大小,nb\U历元=3,
验证数据=(val_feat,[val_labels_a,val_labels_b]))
编辑 如果需要2个输入模型和1个输出,请尝试以下方法:

从keras.models导入
从keras.layers导入稠密,连接
图像_模型=顺序()
添加(卷积2D(32,8,8,子样本=(4,4),输入形状=输入形状))
image_model.add(激活('relu'))
image_model.add(卷积2D(64,4,4,子样本=(2,2)))
image_model.add(激活('relu'))
image_model.add(卷积2D(64,3,3,子样本=(1,1)))
image_model.add(激活('relu'))
image\u model.add(展平())
图像_模型添加(密集(512))
image_model.add(激活('relu'))
值\模型=顺序()
添加(展平(输入形状=值))
附加值(密度(16))
value_model.add(激活('relu'))
附加值(密度(16))
value_model.add(激活('relu'))
附加值(密度(16))
value_model.add(激活('relu'))
合并=连接([image\u model,value\u model])
最终_模型=顺序()
最终模型。添加(合并)
最终模型添加(密集(nb_动作,激活=线性)

True,我需要模型类API。您的示例代码描述了一个输入和两个输出。我将使其适应2个输入(图像和单独的状态值)和1个输出(nb_操作)。请参阅编辑