我想用keras训练一个神经网络,但训练没有开始,而且它发生在非常奇怪的情况下。
这是我代码的一部分:
model = Sequential()
model.add(Convolution2D(8, 7, 7, border_mode='valid', input_shape=(1, 31, 31), activation='tanh'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Convolution2D(16, 5, 5, border_mode='valid', activation='tanh'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Convolution2D(32, 3, 3, border_mode='valid', activation='relu'))
model.add(Flatten())
model.add(Dense(23))
model.add(Activation('tanh'))
model.add(Dropout(0.1))
model.add(Dense(11))
model.add(Activation('sigmoid'))
model.add(Dropout(0.1))
model.add(Dense(1))
model.add(Activation('sigmoid'))
optimizer = SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)
print("optimizer done")
model.compile(loss='binary_crossentropy', optimizer=optimizer)
print("compile done")
sys.stdout.flush()
model.fit(dataset, labels, batch_size=batch_size, nb_epoch=nb_epoch, shuffle=True, validation_split=0.1, verbose=2)
如果我使用 python mynn.py
在终端中运行此代码,一切正常,训练开始。
但是如果我使用 python mynn.py &
、 python mynn.py > results.txt
在终端中运行此代码,或者如果我在我的代码sys.stdout = open('Outputs.txt', 'w')
中重定向输出,那么程序会停止使用 fit
方法,因此学习不会开始。显示compile done
,但仅此而已,没有培训。
我看了一下,似乎程序一直在调用这个函数clock_gettime(CLOCK_MONOTONIC_RAW, {,}) = 0
任何想法为什么当我重定向输出时它没有启动?
最后,该过程开始,但不会在终端中显示任何内容或写入输出文件,直到训练完全结束(执行的所有纪元)。
我通过开始许多不同的小训练发现了,只有几个时代,只有当所有训练结束时,所有内容才会显示出来。