我正在关注自动编码器示例@ https://blog.keras.io/building-autoencoders-in-keras.html但使用我自己的数据。我的 GPU 利用率非常低,几乎没有 GPU 内存利用率。
我想知道它是否只是无法将批次安装到 GPU 上。我的输入数据是 5k 维,我将其编码为 250 维的隐藏表示。当我将自动编码器上的批量大小更改为 1 时,我会得到更高的 GPU 使用率,但它显然很慢(大量数据混洗)。但是当我走得更高时,我几乎没有使用 GPU,而且它仍然很慢(并且比 CPU 加速慢;我在 GPU 上看到的最低是 3.5k 秒,而在 CPU 上是 1.8k 秒)。我的 GPU 是 GTX 970,一切似乎都可以正常工作。
#input and hidden dimension parameters
input_dimensions = Input(shape=(5000,))
encoded_dimensions = 250
#build autoencoder model
encoded = Dense(encoded_dimensions, activation='relu')(input_dimensions)
decoded = Dense(5000, activation='sigmoid')(encoded)
autoencoder = Model(input=input_dimensions, output=decoded)
#build encoder model
encoder = Model(input=input_dimensions, output=encoded)
#build decoder model
encoded_input = Input(shape=(encoded_dimensions,))
decoder_layer = autoencoder.layers[-1]
decoder = Model(input=encoded_input, output=decoder_layer(encoded_input))
autoencoder.compile(optimizer='adadelta', loss = 'mae')
autoencoder.fit(data, data, nb_epoch = 10, batch_size=512, shuffle=True, validation_split=0.1)
我的代码是否有问题导致它运行缓慢,或者可能是一些奇怪的配置问题(我的 .theanorc,值得一提的是,它是为 GPU 配置的,并且使用 GPU 的 theano 报告),或者它是我的数据的函数?