Keras. ValueError: I/O operation on closed file
Keras. ValueError: I/O operation on closed file
我将 jupyter notebook 与 anaconda 结合使用。我首先使用kerast,我不能做教程。关于这个问题在Whosebug上有两个主题,但是没有找到解决方法。
我的代码:
model = Sequential()
model.add(Dense(1, input_dim=1, activation='softmax'))
model.compile(optimizer='rmsprop',
loss='binary_crossentropy',
metrics=['accuracy'])
X_train_shape = X_train.reshape(len(X_train), 1)
Y_train_shape = Y_train.reshape(len(Y_train), 1)
model.fit(X_train, Y_train, nb_epoch=5, batch_size=32)
我有错误,它是随机的,有时一两个 epoch 竞争:
Epoch 1/5 4352/17500 [======>.......................]
--------------------------------------------------------------------------- ValueError Traceback (most recent call
last) in ()
2 # of 32 samples
3 #sleep(0.1)
----> 4 model.fit(X_train, Y_train, nb_epoch=5, batch_size=32)
5 #sleep(0.1)
C:\Anaconda3\envs\py27\lib\site-packages\keras\models.pyc in fit(self,
x, y, batch_size, nb_epoch, verbose, callbacks, validation_split,
validation_data, shuffle, class_weight, sample_weight, **kwargs)
395 shuffle=shuffle,
396 class_weight=class_weight,
--> 397 sample_weight=sample_weight)
398
399 def evaluate(self, x, y, batch_size=32, verbose=1,
C:\Anaconda3\envs\py27\lib\site-packages\keras\engine\training.pyc in
fit(self, x, y, batch_size, nb_epoch, verbose, callbacks,
validation_split, validation_data, shuffle, class_weight,
sample_weight) 1009 verbose=verbose,
callbacks=callbacks, 1010
val_f=val_f, val_ins=val_ins, shuffle=shuffle,
-> 1011 callback_metrics=callback_metrics) 1012 1013 def
evaluate(self, x, y, batch_size=32, verbose=1, sample_weight=None):
C:\Anaconda3\envs\py27\lib\site-packages\keras\engine\training.pyc in
_fit_loop(self, f, ins, out_labels, batch_size, nb_epoch, verbose, callbacks, val_f, val_ins, shuffle, callback_metrics)
753 batch_logs[l] = o
754
--> 755 callbacks.on_batch_end(batch_index, batch_logs)
756
757 epoch_logs = {}
C:\Anaconda3\envs\py27\lib\site-packages\keras\callbacks.pyc in
on_batch_end(self, batch, logs)
58 t_before_callbacks = time.time()
59 for callback in self.callbacks:
---> 60 callback.on_batch_end(batch, logs)
61 self._delta_ts_batch_end.append(time.time() - t_before_callbacks)
62 delta_t_median = np.median(self._delta_ts_batch_end)
C:\Anaconda3\envs\py27\lib\site-packages\keras\callbacks.pyc in
on_batch_end(self, batch, logs)
187 # will be handled by on_epoch_end
188 if self.verbose and self.seen < self.params['nb_sample']:
--> 189 self.progbar.update(self.seen, self.log_values)
190
191 def on_epoch_end(self, epoch, logs={}):
C:\Anaconda3\envs\py27\lib\site-packages\keras\utils\generic_utils.pyc
in update(self, current, values)
110 info += ((prev_total_width - self.total_width) * " ")
111
--> 112 sys.stdout.write(info)
113 sys.stdout.flush()
114
C:\Anaconda3\envs\py27\lib\site-packages\ipykernel\iostream.pyc in
write(self, string)
315
316 is_child = (not self._is_master_process())
--> 317 self._buffer.write(string)
318 if is_child:
319 # newlines imply flush in subprocesses
ValueError: I/O operation on closed file
更改您的详细级别
model.fit()
到
verbose=0.
参见 github.com/fchollet/keras/issues/2110
这不是一个直接的 "fix",但它应该有助于缓解与 iPython 控制台更新相关的竞争条件。
我将 jupyter notebook 与 anaconda 结合使用。我首先使用kerast,我不能做教程。关于这个问题在Whosebug上有两个主题,但是没有找到解决方法。
我的代码:
model = Sequential()
model.add(Dense(1, input_dim=1, activation='softmax'))
model.compile(optimizer='rmsprop',
loss='binary_crossentropy',
metrics=['accuracy'])
X_train_shape = X_train.reshape(len(X_train), 1)
Y_train_shape = Y_train.reshape(len(Y_train), 1)
model.fit(X_train, Y_train, nb_epoch=5, batch_size=32)
我有错误,它是随机的,有时一两个 epoch 竞争:
Epoch 1/5 4352/17500 [======>.......................]
--------------------------------------------------------------------------- ValueError Traceback (most recent call last) in () 2 # of 32 samples 3 #sleep(0.1) ----> 4 model.fit(X_train, Y_train, nb_epoch=5, batch_size=32) 5 #sleep(0.1)
C:\Anaconda3\envs\py27\lib\site-packages\keras\models.pyc in fit(self, x, y, batch_size, nb_epoch, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, **kwargs) 395 shuffle=shuffle, 396 class_weight=class_weight, --> 397 sample_weight=sample_weight) 398 399 def evaluate(self, x, y, batch_size=32, verbose=1,
C:\Anaconda3\envs\py27\lib\site-packages\keras\engine\training.pyc in fit(self, x, y, batch_size, nb_epoch, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight) 1009 verbose=verbose, callbacks=callbacks, 1010
val_f=val_f, val_ins=val_ins, shuffle=shuffle, -> 1011 callback_metrics=callback_metrics) 1012 1013 def evaluate(self, x, y, batch_size=32, verbose=1, sample_weight=None):C:\Anaconda3\envs\py27\lib\site-packages\keras\engine\training.pyc in _fit_loop(self, f, ins, out_labels, batch_size, nb_epoch, verbose, callbacks, val_f, val_ins, shuffle, callback_metrics) 753 batch_logs[l] = o 754 --> 755 callbacks.on_batch_end(batch_index, batch_logs) 756 757 epoch_logs = {}
C:\Anaconda3\envs\py27\lib\site-packages\keras\callbacks.pyc in on_batch_end(self, batch, logs) 58 t_before_callbacks = time.time() 59 for callback in self.callbacks: ---> 60 callback.on_batch_end(batch, logs) 61 self._delta_ts_batch_end.append(time.time() - t_before_callbacks) 62 delta_t_median = np.median(self._delta_ts_batch_end)
C:\Anaconda3\envs\py27\lib\site-packages\keras\callbacks.pyc in on_batch_end(self, batch, logs) 187 # will be handled by on_epoch_end 188 if self.verbose and self.seen < self.params['nb_sample']: --> 189 self.progbar.update(self.seen, self.log_values) 190 191 def on_epoch_end(self, epoch, logs={}):
C:\Anaconda3\envs\py27\lib\site-packages\keras\utils\generic_utils.pyc in update(self, current, values) 110 info += ((prev_total_width - self.total_width) * " ") 111 --> 112 sys.stdout.write(info) 113 sys.stdout.flush() 114
C:\Anaconda3\envs\py27\lib\site-packages\ipykernel\iostream.pyc in write(self, string) 315 316 is_child = (not self._is_master_process()) --> 317 self._buffer.write(string) 318 if is_child: 319 # newlines imply flush in subprocesses
ValueError: I/O operation on closed file
更改您的详细级别
model.fit()
到
verbose=0.
参见 github.com/fchollet/keras/issues/2110
这不是一个直接的 "fix",但它应该有助于缓解与 iPython 控制台更新相关的竞争条件。