Я новичок в 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**