что-то не так с процессом нормализации данных (np.max np.mean и т. д.) - PullRequest
0 голосов
/ 07 ноября 2019

Я новичок в Python. Когда я использовал тензорный поток для классификации, появилась ошибка, которая, по-видимому, ссылалась на нормализацию с помощью numpy:

C: \ Users ... \ lib \ site-packages \ numpy \ core \ fromnumeric.py:3257: RuntimeWarning: среднее значение пустого среза. out = out, ** kwargs)

C: \ Users ... \ lib \ site-packages \ numpy \ core_methods.py: 161: RuntimeWarning: недопустимое значение, встречающееся в true_divide ret = ret.dtype.type(ret / rcount)

Трассировка (последний последний вызов):

Файл "C: / Users / fy055 /.../ ccnn_class_CONVtrainFULLtrain_hcp.py", строка205, в модуле

train_data, train_labels, test_data, test_labels = create_train_and_test_data (i, идентификаторы, subjectID, метки, data_tensor)

файл "C: / Users / fy055/.../ccnn_class_CONVtrainFULLtrain_hcp.py",line 142, в create_train_and_test_data

test_data = normalize_tensor (data_tensor [testIDs,:,::]). astype (np.float32 *). 1021 * Файл "C: / Users / fy055 /.../ ccnn_class_CONVtrainFULLtrain_hcp.py", строка 92, в normalize_tensor

data_tensor / = np.max (np.abs (data_tensor))

Файл "<__ array_function__ internals>", строка 6, в amax

Файл "C: \ Users \ fy055 ... \ lib \ site-packages \ numpy \ core"\изnumeric.py ", строка 2621, в amax

keepdims = keepdims, initial = initial, where = where)

Файл" C: \ Users \ fy055 .. . \ lib \ site-packages \ numpy \ core \ fromnumeric.py ", строка 90, в _wrapreduction

return ufunc.reduce (obj, axis, dtype, out, * passkwargs)*

ValueError: массив с нулевым размером до максимума операции сокращения, который не имеет идентификатора

Я пытался найти его в Google, но не смог найти выход. Я не был уверен, что с процессом нормализации данных что-то не так. Кто-нибудь знал в чем проблема и как ее исправить? Большое вам спасибо.

Код:

with open(pickle_file, 'rb') as f:
    data_tensor = pickle.load(f)
……
# normalize_tensor standardizes an n dimesional np.array to have zero mean and standard deviation of 1
def normalize_tensor(data_tensor):
    data_tensor -= np.mean(data_tensor)
    **data_tensor /= np.max(np.abs(data_tensor))**             **#line 92**
    return data_tensor
……
def create_train_and_test_data(fold, IDs, subjects, labels, data_tensor):
    #create one-hot encoding of labels
    num_labels = len(np.unique(labels))
    labels = (np.arange(num_labels) == labels[:,None]).astype(np.float32)

    #identify the IDs of test subjects
    testIDs = np.in1d(subjects, IDs[:,fold])

    test_data = normalize_tensor(data_tensor[testIDs,:,:,:]).astype(np.float32)   **#line 142**
    test_labels = labels[testIDs]

    train_data = normalize_tensor(data_tensor[~testIDs,:,:,:]).astype(np.float32)
    train_labels = labels[~testIDs]
    train_data, train_labels = randomize_tensor(train_data, train_labels)

    return train_data, train_labels, test_data, test_labels
……
# Creating train and test data for the given fold
    train_data, train_labels, test_data, test_labels = create_train_and_test_data(i, IDs, subjectIDs, labels, data_tensor)            **#line 205**
...