在我家的机器上,我遇到了一个问题,这个问题在我的工作机器上没有发生。具体来说,Python在初始化中等大小的重复层时冻结并锁定内核(我甚至无法中断)。
以下是一个可重复性最小的例子:
from keras.models import Model # Keras 2.x
from keras.layers import Input, GRU
from keras import backend as K # TensorFlow (1.3) backend
input_stuff = Input(shape=(1, 2048)) # Works
print(K.int_shape(input_stuff)) # Works
encoder = GRU(512, return_state=False, stateful=False) # Works
gru_out = encoder(input_stuff) # Freezes here
print(K.int_shape(gru_out))
当我用LSTM而不是GRU尝试它时,会发生同样的事情。 (如果您使用具有单个时间步长的输入的复现层明显奇怪,请忽略。)
当它冻结时,它就会永远运行。 (可能在某些时候停止,但我总是在它之前杀死所有东西。)粉丝最终呻吟,好像它正在做一些真正的工作。我注意到可用RAM没有明显的吸引力。我还注意到,此时TensorFlow在GPU上没有分配内存。另一方面,CPU负载高达约400%(这是一台八核机器)。
我最近通过pip安装了TensorFlow 1.4,但这是在Python 3.6内核上加载1.3。一些迷路点:
我怀疑这是一个软件包/模块或版本冲突。我承认我没有像我应该使用单独的环境那样小心,而不是把所有东西都集中在我的核心沙盒代码时构建Python。我的机器上有一些相互冲突的模块版本(一些通过pip,一些通过Conda),所以也许这是我学习的一课。
一个“修复”显然是使用Conda环境,在这种情况下,它不会给我任何问题。但这是一个奇怪的症状;我真的很想了解为什么正在发生。
系统信息:
对于包裹信息(yikes),“conda list”的输出为here。