I was running a scaling code in python for a weight matrix in Ubuntu but this OS had a crash so I run this code in windows now. The problem is that it pops this warning 16: RuntimeWarning: invalid value encountered in cast quantized_data = ((data - min_value) / quantization_step).astype(int) This was not happening in Linux and the code does give the expected results for the negative values.
import numpy as np
def quantize_data(data, num_levels):
# Find the maximum and minimum values
min_value = np.min(data)
max_value = np.max(data)
# Calculate the width of each quantization interval (bin)
quantization_step = (max_value - min_value) / (num_levels - 1) # -1 to ensure covering the entire range
# Handle division by zero
if np.isnan(data).any():
print("Warning: NaN values encountered in data.")
# Quantize the data
quantized_data = ((data - min_value) / quantization_step).astype(int)
print("Quatized Data",quantized_data)
# Handle NaN values
# quantized_data[np.isnan(quantized_data)] = 0 # Replace NaN values with 0
return quantized_data
def count_binary_digits(quantized_data):
# Initialize counters
num_ones = 0
num_zeros = 0
# Iterate through each value in quantized_data
for value in quantized_data.flat:
# Convert the value to its binary representation
binary_string = np.binary_repr(value)
print("binary",binary_string)
# Count the number of '1' and '0' digits in binary representation
num_ones += binary_string.count('1')
num_zeros += binary_string.count('0')
return num_ones, num_zeros
# Example usage:
file_path = 'D:/Διπλωματική Μεταπτυχιακού/Diplomatiki/code_for_wait_plot/results_trainLen_1000/Wout_rc_1000.npy'
data = np.load(file_path)
print(data)
num_levels = 2**32 # Number of quantization levels
# Quantize the data
quantized_data = quantize_data(data, num_levels)
print(quantized_data)
# Count binary digits
num_ones, num_zeros = count_binary_digits(quantized_data)
print("Number of '1' digits:", num_ones)
print("Number of '0' digits:", num_zeros)
This is the line 16
quantized_data = ((data - min_value) / quantization_step).astype(int)
I have tried an online editor and it worked but is to slow