Форма тензора

#python #tensorflow #machine-learning #pytorch

#python #тензорный поток #машинное обучение #pytorch

Вопрос:

Я наткнулся на этот фрагмент кода

(x_train, y_train), (x_test, y_test) = mnist.load_data()
print("Shape of x_train: " str(x_train.shape))
print("Shape of y_train: " str(y_train.shape))

И обнаружил, что результат выглядит следующим образом

(60000, 28, 28)
(60000,)

Для первой строки вывода

Насколько я понимаю, означает ли это, что в 1-м измерении он может содержать 60 тыс. элементов, затем в следующем измерении он может содержать 28 «массив из 60 тыс. элементов» и, наконец, в последнем измерении он может содержать 28 «массив из 28″массив из 60 тыс. элементов ««

Что я хочу уточнить, это 60 тысяч выборок данных 28×28 или что-то еще?

Для второй строки вывода кажется, что это всего лишь 1-мерный массив из 60 тыс. элементов. Итак, что это на самом деле представляет? (я знаю, что в x_train это были рукописные числа, и каждое число представляет интенсивность серого в этой ячейке)

Пожалуйста, обратите внимание, что я взял этот код из какого-то онлайн-примера (я не помню и не буду возражать, если вы хотите, чтобы ваш кредит был добавлен к этому) и общедоступного набора данных tf.keras.datasets.mnist

Комментарии:

1. (60000, 28, 28) == 60000 изображений формы 28x28 . (60000,) == массив из 60000 элементов (в данном случае целых чисел в диапазоне 0-9). Если бы у (60000, 28, 28, 3) вас это было, это означало бы, что у вас есть 60000 изображений RGB, каждое из которых имеет форму (28, 28, 3) .

Ответ №1:

Вы правы, таким образом, первая строка дает 60 тыс. элементов 28x28 данных размера (60000, 28, 28) .

y_train Это метки x_train . Таким образом, они являются одномерными и насчитывают 60 тыс.

Например: если первый элемент x_train представляет собой рукописное изображение 3, то первым элементом y_train будет ‘3’, который является меткой.

Комментарии:

1. Я работал с рукописным набором данных MNIST. Итак, я знаком с тем же.

2. Я обнаружил, что этот комментарий ответил на мой вопрос именно так, как я ожидал (извиняюсь за то, что не так хорошо сформулировал мой вопрос) Этот ответ также ответил на мои последующие вопросы, поэтому я отмечаю это как ответ. Другие ответы не являются неверными, все они верны и дали мне более подробное представление о наборе данных, о котором я никогда не думал. Жаль, что я не мог пометить все как ответы.

Ответ №2:

Ваше понимание фигур правильное. Из контекста, вероятно x_train , это 60 тыс. изображений рукописных чисел (с разрешением 28×28 пикселей), а y_train это просто истинное число 60 тыс., которое показывают изображения.

Ответ №3:

Чтобы понять это, давайте начнем с одномерного массива shape (8,) .

 [1, 2, 3, 4, 5, 6, 7, 8]
  

Если это представлено в виде 2d-массива, скажем, формы (4, 2), оно становится

 [
  [1, 2],
  [3, 4],
  [5, 6],
  [7, 8]
]
  

Смотрите, каждый элемент в 2d-массиве получает форму (2,) и всего 4 элемента.

Давайте представим в 3d с размером (2, 2, 2).

 [
  [
    [1, 2],
    [3, 4]
  ],
  [
    [5, 6],
    [7, 8]
  ]
]
  

Массив на верхнем уровне содержит 2 элемента, которые являются 0-м измерением. На втором уровне снова есть 2 элемента, которые [1, 2], [3, 4] . Конечное измерение размера 2 обозначает 1 amp; 2 последний уровень элементов в иерархии массива.

Следовательно, тензор формы (x, y, z) будет содержать x*y*z элементы.