【问题标题】:keras: concatenate two images as input (DeepVO)keras:连接两个图像作为输入(DeepVO)
【发布时间】:2018-03-02 03:21:36
【问题描述】:

我正在尝试实现this paper 中描述的模型。
我遇到问题的一个项目是设置输入,它应该是堆叠的两个图像,这意味着,我有一组连续的 (i & i+1) 图像 2048x2048x1(单色),所以输入张量将是 2048x2048x2,但神经网络的每个连续输入将是以下图像集(i+1 & i+2)。 到目前为止我有

import numpy as np
from keras.models import Sequential
from keras.layers import Dense, Concatenate, Activation, Conv2D, MaxPooling2D, Flatten, Input
from keras.klayers import Embedding,LSTM 

inp1 = Input((2048,2048,1))
inp2 = Input((2048,2048,1))
deepVO = Sequential()
deepVO.add(Concatenate(inp1,inp2,-1))
deepVO.add(Conv2D(64,(2,2)))
deepVO.add(Activation('relu'))
#....continue to add other layers

我在deepVO_CNN.add(Concatenate(inp1,inp2,-1)) 得到的错误是:

TypeError: __init__() 接受 1 到 2 个位置参数,但给出了 4 个。

【问题讨论】:

  • 为什么?只需使用 Input((2048,2048,2)) 并传递使用 numpy 连接的两个图像。
  • 您正在混合顺序和功能 API,不要那样做。为此,您只需使用功能 API。

标签: tensorflow deep-learning keras conv-neural-network opticalflow


【解决方案1】:

尝试像这样的 keras api 模式:

import numpy as np
from keras.models import Sequential
from keras.layers import Dense, Activation, Conv2D, MaxPooling2D, Flatten, Input, concatenate

from keras.models import Model

inp1 = Input((2048,2048,1))
inp2 = Input((2048,2048,1))

deepVO = concatenate([inp1, inp2],axis=-1)
deepVO = Conv2D(64,(2,2))(deepVO)
deepVO = Activation('relu')(deepVO)
...

...
outputs = Dense(num_classes, activation='softmax')(deepVO)
deepVO = Model([inp1, inp2], outputs)
#deepVO.summary()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-10
    • 2017-04-01
    • 2021-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多