Esta pequena rede convolucional de brinquedo compila e treina como você esperaria:
vis_in = Input(shape=VIS_SHAPE, name='vis_in_singleframe')
x = ZeroPadding2D((1,1))(vis_in)
x = Convolution2D(64, 3, 3, activation='relu')(x)
x = ZeroPadding2D((1,1))(x)
x = Convolution2D(64, 3, 3, activation='relu')(x)
x = MaxPooling2D((2,2), strides=(2,2))(x)
x = Flatten()(x)
x = Dense(512, activation='relu')(x)
x = Dropout(0.5)(x)
x = Dense(10, activation='sigmoid')(x)
model = Model(input=vis_in, output=x)
No entanto, quando você quiser envolvê-lo em TimeDistributed
para fazê-lo avaliar uma sequência de vídeo,
vis_input = Input(shape=(MAX_FRAMES,)+VIS_SHAPE, name='vis_in')
x = TimeDistributed(model)(vis_input)
# Let's say we want to do a simple regression over everything
x = Flatten()(x)
x = Dense(1, activation='sigmoid')(x)
model = Model(input=vis_input, output=x)
o modelo irá compilar bem, mas Theano apresentará um erro quando você tentar treinar:
theano.gof.fg.MissingInputError: Uma entrada do gráfico, usada para calcular DimShuffle {x, x} (keras_learning_phase), não foi fornecida e não foi fornecido um valor.
No entanto, se livrar da camada de exclusão,
#x = Dropout(0.5)(x)
irá permitir que funcione. Não estou familiarizado o suficiente com Theano para entender sua mensagem: /
Isso parece funcionar com o TensorFlow, embora no meu Macbook ele engula memória a ponto de o espaço em disco ficar cheio, provavelmente por causa de toda aquela troca doce (estou surpreso que o sistema operacional não impede que isso aconteça ... Eu afastou-se por alguns minutos enquanto estava compilando e voltei para encontrar ~ 50 GB de espaço em disco e um aviso na minha tela. Não tenho certeza se isso está relacionado ou apenas um problema de TF.)
Este era um bug e agora foi corrigido. Obrigado pelo relatório.
Não tenho certeza se isso está relacionado ou apenas um problema de TF.
Parece um problema de TF. A propósito, se não poderia ter trabalhado com TF.
Ocorreu este erro ao usar um modelo sequencial como camada se a primeira camada fosse BatchNormalization
. Estava usando o back-end do theano.
a = Input(...)
model = Sequential()
model.add(BatchNormalization(...))
model.add(....)
model.add(....)
b= model(a)
Comentários muito úteis
Este era um bug e agora foi corrigido. Obrigado pelo relatório.