Rya*_*cus 8 python neural-network keras
这个Keras模型似乎需要使用Tensorflow后端的6GB + RAM.我的背后数学建议存储权重不应超过500MB.这是怎么回事?
from keras.models import Sequential
from keras.layers.core import Dense, Activation, Dropout, Flatten
from keras.layers.convolutional import Convolution2D, MaxPooling2D
IMAGE_SIZE = 128
print('Build model...')
model = Sequential()
# three color channels, 128x128
# 16 con filters, 3 rows, 3 columns
model.add(Convolution2D(16, 3, 3, input_shape=(3, IMAGE_SIZE, IMAGE_SIZE)))
model.add(Activation('relu'))
model.add(Flatten())
model.add(Dense(1))
model.add(Dense(3 * IMAGE_SIZE * IMAGE_SIZE))
model.compile(loss='mse', optimizer='sgd')
Run Code Online (Sandbox Code Playgroud)
它是一个连接到单个神经元的卷积层(16个3x3滤波器),然后该单个神经元连接到~50k神经元.
我对Keras很新,所以我想我的误解是非常基本的,但我似乎无法弄明白.
Rya*_*cus 12
事实证明,我的问题包括我的CUDA 7.5 LD_CONFIG_PATH的路径,但包括CUDA 7.0的路径PATH.显然,这种尴尬的组合会产生一些未定义的行为,在我的情况下会产生内存泄漏.
在用a检查代码之后valgrind,我发现nvcc7.0中的内容实际上是跳进了CUDA(7.5)库的无意义区域,这并不意外.它实际上是非常惊人的泄漏内存而不是崩溃,而Theano也有同样的错误.
希望未来没有其他人会受到这个特定问题的困扰,但如果你是,请仔细检查你的版本路径!
在我的本地机器上,没有安装GPU的Tensorflow,我仍然遇到了内存泄漏,这似乎是之前(0.7.0)版本中已经通过(0.7.1)版本解决的错误.同样,我还没弄清楚为什么我的非GPU Theano后端也产生了泄漏,但在升级Tensorflow之后,Theano后端也没有泄漏.这是一个非常奇怪的事情,但我相信这个问题的一般解决方案是"升级"和"仔细检查你的环境".