Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Issue running mnist_conv.py - Process finished with exit code 132 (interrupted by signal 4:SIGILL) #4

Open
schultz77 opened this issue Apr 18, 2024 · 2 comments

Comments

@schultz77
Copy link

Hi,
Amazing tutorial again. Unfortunately i am facing some problems with the code

my system:

Python 3.12.3 [GCC 11.4.0] on linux
I am running it in an old Laptop
linux kernel 5.15.0-102-generic, processor Intel Pentium CPU N3540 @ 2.16GHz × 4, memory 7.6 GiB

in order to get free of errors i had to modify the code:
from:

from keras.utils import np_utils

to:

from keras.utils import to_categorical

After running it i've got following error:

File "../lib/python3.12/site-packages/keras/src/utils/tree.py", line 12, in

from tensorflow.python.trackable.data_structures import ListWrapper

ModuleNotFoundError: No module named 'tensorflow'

After installing tensorflow and running the script:

Process finished with exit code 132 (interrupted by signal 4:SIGILL)

Could you please support me with this?
i am really looking forward to debug the script to get deeper understanding of it.

Thank You in advance!

@schultz77 schultz77 changed the title Issue running mnist_conv.py Issue running mnist_conv.py - Process finished with exit code 132 (interrupted by signal 4:SIGILL) Apr 18, 2024
@schultz77
Copy link
Author

I am trying to load the mnist data without tensorflow but i am have save errors with reshape:

def load_mnist():
    base_url = 'http://yann.lecun.com/exdb/mnist/'
    files = ['train-images-idx3-ubyte.gz', 'train-labels-idx1-ubyte.gz',
             't10k-images-idx3-ubyte.gz', 't10k-labels-idx1-ubyte.gz']

    data = {}

    # Download and load training and testing data
    for file in files:
        url = base_url + file
        filename = os.path.join('data', file)
        if not os.path.exists('data'):
            os.makedirs('data')
        if not os.path.exists(filename):
            print('Downloading', file, '...')
            r = requests.get(url)
            with open(filename, 'wb') as f:
                f.write(r.content)

        with gzip.open(filename, 'rb') as f:
            if file.endswith('images-idx3-ubyte.gz'):
                # data[file] = np.frombuffer(f.read(), np.uint8, offset=16).reshape(-1, 28, 28)
                data[file] = np.frombuffer(f.read(), np.uint8, offset=16)
            elif file.endswith('labels-idx1-ubyte.gz'):
                data[file] = np.frombuffer(f.read(), np.uint8, offset=8)

    return data


# Load MNIST dataset 
mnist = load_mnist()

# Extract training data and labels
x_train, y_train = mnist['train-images-idx3-ubyte.gz'], mnist['train-labels-idx1-ubyte.gz']
x_test, y_test = mnist['t10k-images-idx3-ubyte.gz'], mnist['t10k-labels-idx1-ubyte.gz']

Do you have any hint? Thx!

@schultz77
Copy link
Author

It runs using this approach. However, I am not 100% sure:

import numpy as np
# from keras.datasets import mnist
# from keras.utils import to_categorical

from sklearn.datasets import fetch_openml

from dense import Dense
from convolutional import Convolutional
from reshape import Reshape
from activations import Sigmoid
from losses import binary_cross_entropy, binary_cross_entropy_prime
from network import train, predict


def to_one_hot(y_value):
    num_classes = np.max(y_value) + 1
    one_hot_matrix = np.eye(num_classes)[y_value.reshape(-1)]
    return one_hot_matrix.reshape(list(y_value.shape) + [num_classes])


def preprocess_data(x_value, y_value, limit):
    zero_indices = np.where(y_value.values == 0)[0][:limit]
    one_indices = np.where(y_value.values == 1)[0][:limit]

    all_indices = np.hstack((zero_indices, one_indices))
    all_indices = np.random.permutation(all_indices)

    x_value = x_value.iloc[all_indices].values.astype("float32") / 255
    x_value = x_value.reshape(len(x_value), 1, 28, 28)

    y_value = y_value.iloc[all_indices].values
    y_value = to_one_hot(y_value)
    y_value = y_value.reshape(len(y_value), 2, 1)

    return x_value, y_value


# Load MNIST data from OpenML
mnist = fetch_openml('mnist_784')

# Separate features and labels
x_data, y_data = mnist['data'], mnist['target']

# Convert string labels to integers
y_data = y_data.astype(int)

# Preprocess the data
x_train, y_train = preprocess_data(x_data[:60000], y_data[:60000], 100)
x_test, y_test = preprocess_data(x_data[60000:], y_data[60000:], 100)

# Print shapes of training and testing data and labels
print("Training data shape:", x_train.shape)
print("Training labels shape:", y_train.shape)
print("Testing data shape:", x_test.shape)
print("Testing labels shape:", y_test.shape)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant