Python Jupyter笔记本和Keras TQM:AttributeError:';TQDMNotebookCallback';对象没有属性';在列车上批量开始';

Python Jupyter笔记本和Keras TQM:AttributeError:';TQDMNotebookCallback';对象没有属性';在列车上批量开始';,python,keras,jupyter-notebook,attributeerror,tqdm,Python,Keras,Jupyter Notebook,Attributeerror,Tqdm,我试图在Jupyter笔记本中使用进度条,但我不断从标题中得到错误 我的代码是: X_train, X_val, Y_train, Y_val = train_test_split(X_train, Y_train, test_size=0.1,random_state=2) model = keras.Sequential([keras.layers.Flatten(input_shape=(28,28,1)), keras.layers.D

我试图在Jupyter笔记本中使用进度条,但我不断从标题中得到错误

我的代码是:

X_train, X_val, Y_train, Y_val = train_test_split(X_train, Y_train, test_size=0.1,random_state=2)
model = keras.Sequential([keras.layers.Flatten(input_shape=(28,28,1)),
                          keras.layers.Dense(128, activation=tf.nn.relu),
                          keras.layers.Dense(10, activation=tf.nn.softmax
                         )])
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
history = model.fit(X_train, Y_train, epochs=5, verbose=0, callbacks=[TQDMNotebookCallback()])
运行最后一行后,我出现以下错误:

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-27-edd4c9b07979> in <module>
----> 1 history = model.fit(X_train, Y_train, epochs=5, verbose=0, callbacks=[TQDMNotebookCallback()])

/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/tensorflow/python/keras/engine/training.py in fit(self, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps, max_queue_size, workers, use_multiprocessing, **kwargs)
    878           initial_epoch=initial_epoch,
    879           steps_per_epoch=steps_per_epoch,
--> 880           validation_steps=validation_steps)
    881 
    882   def evaluate(self,

/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/tensorflow/python/keras/engine/training_arrays.py in model_iteration(model, inputs, targets, sample_weights, batch_size, epochs, verbose, callbacks, val_inputs, val_targets, val_sample_weights, shuffle, initial_epoch, steps_per_epoch, validation_steps, mode, validation_in_fit, **kwargs)
    323         # Callbacks batch_begin.
    324         batch_logs = {'batch': batch_index, 'size': len(batch_ids)}
--> 325         callbacks._call_batch_hook(mode, 'begin', batch_index, batch_logs)
    326         progbar.on_batch_begin(batch_index, batch_logs)
    327 

/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/tensorflow/python/keras/callbacks.py in _call_batch_hook(self, mode, hook, batch, logs)
    194     t_before_callbacks = time.time()
    195     for callback in self.callbacks:
--> 196       batch_hook = getattr(callback, hook_name)
    197       batch_hook(batch, logs)
    198     self._delta_ts[hook_name].append(time.time() - t_before_callbacks)

AttributeError: 'TQDMNotebookCallback' object has no attribute 'on_train_batch_begin'
---------------------------------------------------------------------------
AttributeError回溯(最近一次呼叫上次)
在里面
---->1 history=model.fit(X_-train,Y_-train,epochs=5,verbose=0,回调=[TQDMNotebookCallback()]))
/fit中的Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/tensorflow/Python/keras/engine/training.py(self、x、y、批处理大小、历元、冗余、回调、验证拆分、验证数据、随机、类权重、样本权重、初始历元、每历元的步骤、验证步骤、最大队列大小、工作者、使用多处理、**kwargs)
878初始纪元=初始纪元,
879步/u历元=步/u历元,
-->880验证步骤=验证步骤)
881
882 def评估(自我,
/模型迭代中的Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/tensorflow/Python/keras/engine/training\u arrays.py(模型、输入、目标、样本权重、批量大小、年代、详细信息、回调、val_输入、val_目标、val_样本权重、混洗、初始_历元、每历元步数、验证步骤、模式、验证适合度,**kwargs)
323#开始回调批处理。
324批处理日志={'batch':批处理索引,'size':len(批处理ID)}
-->325回调。调用批处理钩子(模式“开始”、批处理索引、批处理日志)
326程序条。在批处理开始时(批处理索引、批处理日志)
327
/库/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/tensorflow/Python/keras/callbacks.py in_call_batch_hook(self、mode、hook、batch、logs)
194 t_before_回调=time.time()
195对于self.callbacks中的回调:
-->196批处理钩子=getattr(回调,钩子名称)
197批次挂钩(批次、日志)
198 self._delta_ts[hook_name].append(time.time()-t_-before_回调)
AttributeError:'TQDMNotebookCallback'对象在\u train\u batch\u begin'上没有属性'

这似乎是.From的问题

本期中发布的解决方案对我有效:

from keras_tqdm import TQDMNotebookCallback

# keras, model definition...
cb = TQDMNotebookCallback()
setattr(cb,'on_train_batch_begin',lambda x,y:None)
setattr(cb,'on_train_batch_end',lambda x,y:None)

model.fit(X_train, Y_train, verbose=0, callbacks=[cb])

简介:直接使用keras库,而不是tensorflow.keras

最初,我使用的是tensorflow中的keras(以及tensorflow中的所有keras库),并面临相同的问题,即

from tensorflow.keras.models import Sequential
from tensorflow.keras.optimizers import Adam
.
.
但是,当我切换到keras库时,“TQDMNotebookCallback”错误得到了解决。 例:

我不知道确切的原因,但可能与克拉斯的来源有关

from keras.models import Sequential
from keras.optimizers import Adam
.
.