import numpy as np
def data_iter_random(data_indices, num_steps, batch_size):
example_size = len(data_indices)/num_steps
epoch_size = example_size/batch_size
example = [data_indices[i*num_steps:i*num_steps + num_steps]
for i in range(int(example_size))]
shuffle_example = np.random.shuffle(example)
print(shuffle_example)
data_iter_random(list(range(30)), 5, 2)
Выход None
Может кто-нибудь сказать мне, что не так?
2 ответа
Проблема в том, что np.random.shuffle
изменяет последовательность на месте. Из документации:
Измените последовательность на месте, перетасовывая ее содержимое.
Просто напечатайте example
:
import numpy as np
def data_iter_random(data_indices, num_steps, batch_size):
example_size = len(data_indices) / num_steps
epoch_size = example_size / batch_size
example = [data_indices[i * num_steps:i * num_steps + num_steps]
for i in range(int(example_size))]
np.random.shuffle(example)
print(example)
data_iter_random(list(range(30)), 5, 2)
< Сильный > Выход
[[25, 26, 27, 28, 29], [5, 6, 7, 8, 9], [0, 1, 2, 3, 4], [20, 21, 22, 23, 24], [15, 16, 17, 18, 19], [10, 11, 12, 13, 14]]
Это потому, что np.random.shuffle
- это метод "на месте".
так что не нужно назначать
делает это на месте
Документы говорят: «Измените последовательность на месте, перетасовывая ее содержимое».
Ну действуй:
np.random.shuffle(example)
print(example)
Для этих строк.
Полный код:
import numpy as np
def data_iter_random(data_indices, num_steps, batch_size):
example_size = len(data_indices)/num_steps
epoch_size = example_size/batch_size
example = [data_indices[i*num_steps:i*num_steps + num_steps]
for i in range(int(example_size))]
np.random.shuffle(example)
print(example)
data_iter_random(list(range(30)), 5, 2)
Выход:
[[5, 6, 7, 8, 9], [10, 11, 12, 13, 14], [25, 26, 27, 28, 29], [15, 16, 17, 18, 19], [0, 1, 2, 3, 4], [20, 21, 22, 23, 24]]
Таких функций очень мало.
Похожие вопросы
Новые вопросы
python
Python - это многопарадигмальный, динамически типизированный, многоцелевой язык программирования. Он разработан для быстрого изучения, понимания и использования, а также для обеспечения чистого и единообразного синтаксиса. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Тем не менее, для вопросов о Python, связанных с версией, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas и NumPy) включите его в теги.