Search code examples
pythonkerastensorflow2.0huggingface-transformers

"No module named keras" error in transformers


I'm trying to load a pretrained BERT model in a sagemaker training job using the transformers library and I'm getting "No modul named keras error". You can find the relevant code, imports and requirements.txt below

import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras.wrappers.scikit_learn import KerasClassifier
from tensorflow.keras import applications
from tensorflow.keras import layers
from tensorflow.keras import losses
from tensorflow.keras import optimizers
from tensorflow.keras import metrics
from tensorflow.keras import Model
from transformers import TFAutoModel
from transformers import BertTokenizer
from tensorflow.keras.layers import LeakyReLU

bert1 = TFAutoModel.from_pretrained('path/to/BERT', from_pt=True)

requirements.txt (I haven't set any versions for these):

transformers
torch
SentencePiece

Other env settings:

Python= 3.7
tensorflow= 2.3

I had used these exact settings a few months back and faced no issues, so not sure why I'm getting this error now

Edit: based on the answers I received, I added Keras to my requirements and also added from TensorFlow import keras statement, and now I'm getting the following error:

ModuleNotFoundError: No module named 'keras.saving'

Solution

  • Turns out a new version of the huggingface-transformers library was released a few days ago. So setting the transformers version to 4.20.1 solved the issue. Maybe upgrading TensorFlow to 2.7 might work as well.