Keras: O modelo com a camada Dropout envolvida em TimeDistributed falha no Theano

Criado em 19 abr. 2016  ·  3Comentários  ·  Fonte: keras-team/keras

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.)

Comentários muito úteis

Este era um bug e agora foi corrigido. Obrigado pelo relatório.

Todos 3 comentários

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)
Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

braingineer picture braingineer  ·  3Comentários

nryant picture nryant  ·  3Comentários

LuCeHe picture LuCeHe  ·  3Comentários

fredtcaroli picture fredtcaroli  ·  3Comentários

rantsandruse picture rantsandruse  ·  3Comentários