TransWikia.com

AttributeError: module 'tensorflow.python.keras.utils' has no attribute 'to_categorical'

Data Science Asked on August 13, 2021

I’m trying to run the code below in my Jupyter Notebook.
I get:

AttributeError: module ‘tensorflow.python.keras.utils’ has no
attribute ‘to_categorical’

This is code from Kaggle tutorial. I have installed Keras and Tensorflow.

 import numpy as np
    import pandas as pd
    from sklearn.model_selection import train_test_split
    from tensorflow.python import keras
    from tensorflow.python.keras.models import Sequential
    from tensorflow.python.keras.layers import Dense, Flatten, Conv2D, Dropout  

      img_rows, img_cols = 28, 28
    num_classes = 10
    
    def data_prep(raw):
        out_y = keras.utils.to_categorical(raw.label, num_classes)
    
        num_images = raw.shape[0]
        x_as_array = raw.values[:,1:]
        x_shaped_array = x_as_array.reshape(num_images, img_rows, img_cols, 1)
        out_x = x_shaped_array / 255
        return out_x, out_y
    
    raw_data = pd.read_csv('trainMNIST.csv')
    
    x, y = data_prep(raw_data)
    
    model = Sequential()
    model.add(Conv2D(20, kernel_size=(3, 3),
                     activation='relu',
                     input_shape=(img_rows, img_cols, 1)))
    model.add(Conv2D(20, kernel_size=(3, 3), activation='relu'))
    model.add(Flatten())
    model.add(Dense(128, activation='relu'))
    model.add(Dense(num_classes, activation='softmax'))
    
    model.compile(loss=keras.losses.categorical_crossentropy,
                  optimizer='adam',
                  metrics=['accuracy'])
    model.fit(x, y,
              batch_size=128,
              epochs=2,
              validation_split = 0.2)

4 Answers

Use keras>=2.2 and tensorflow >=1.14 to resolve the issue.

Answered by SrJ on August 13, 2021

Include this in your code

from tensorflow import keras

in place of

from tensorflow.python import keras

Answered by Anubhav Agrawal on August 13, 2021

As it already has been said, to_categorical() is function. It in keras for tensorflow 2.x can be imported this way:

from keras.utils import to_categorical

then used like this:

digit=6
x=to_categorical(digit, 10)
print(x)

it will print

[0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]

Where 10 is the number of classes, the input values range is [0;number_of_classes-1]. The output is activated (1) or not active (0) position.

Answered by A. Genchev on August 13, 2021

Newer versions of keras==2.4.0 and tensorflow==2.3.0 would work as follows.

Import:

from keras.utils import np_utils

or

from keras import utils as np_utils

and then replace keras.utils.to_categorical with

keras.utils.np_utils.to_categorical

Answered by Vin Bolisetti on August 13, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP