LINUX.ORG.RU

Что такое тензор?

 


5

3

Читал-читал... Тензор - он всё. Базовый «пакет» данных, к операциями над которым сводятся любые востребованные в области ML вычисления?

Вектор, матрица и даже скаляр - частные случаи тензора.

А можно как-то более простыми словами для дегенератов объяснить, что это такое и в чём абстрактная красота и универсальность понятия?

Недаром ведь «поток тензоров» - TensorFlow...

Ответ на: комментарий от quickquest

Инвариантность - это свойство, а линейность - это определение.

А уж как вы нужность меряете - дело ваше.

alpha ★★★★★
()
Ответ на: комментарий от alpha

Инвариантность - это свойство, а линейность - это определение.

Вообще-то все наоборот. Сперва фиксируется инвариантность, и потом уже (чисто случайно) оказывается, что преобразование линейно. Без предположения об инвариантности, вывести линейность не выйдет. А вот если тебе дано линейное преобразование, то оно совсем не факт, что будет инвариантно.

anonymous
()
Ответ на: комментарий от anonymous

Ты путаешь тензор как самостоятельную сущность и те тензоры, которые имеют физический смысл.

Абстрактному тензору ваша инвариантность не интересна. Это самодостаточный математический объект и ему интересно векторное пространство, для которого он определен как полилинейное отображение, и только.

Инвариантность свойств физических объектов и описание их тензорами (тензор инерции твердого тела например) - это приложения, частные случаи, когда оказывается что некое конкретное физическое свойство описывается каким-то фиксированным тензором над некоторым векторным пространством.

Примерно как есть производная (скорость), а есть скорость света в вакууме. Одно - математическое понятие, а другое - физическая величина.

alpha ★★★★★
()
Последнее исправление: alpha (всего исправлений: 1)
Ответ на: комментарий от alpha

Абстрактному тензору ваша инвариантность не интересна.

Она содержится в его определении.

Это самодостаточный математический объект и ему интересно векторное пространство, для которого он определен как полилинейное отображение, и только.

Чтобы быть полилинейным отображением (и вообще просто отображением) - надо быть инвариантным. Я могу определить «отображение» (в кавычках), которое будет задано так, что работает по-разному в разных координатах. Оно не будет отображением в строгом математическом смысле (это будет семейство отображений, для каждого базиса - свое). Так что, когда ты говоришь, что тензор - это отображение (которое блаблабла), то факт инвариантности уже оказывается зафиксирован (пусть и неявно). Не может быть неинвариантного отображения.

anonymous
()

Я думаю, моя работа по развенчиванию математической пропаганды закончена. Математики сами неплохо справляются.

Читателю же предлагается расслабится и перенестись в уютную атмосферу средневековья, пока математики выясняют количество ангелов, способных поместиться на кончике иглы.

anonymous
()
Ответ на: комментарий от Norgat

То есть, те тензоры, что в физике, это просто «каркас» для чисел, которые обозначают собой некие численные свойства типа энергии, импульса, и т.д.? А когда говорят, что для какой-то теории нужны дополнительные измерения, это значит, что такие вот числа некуда запихать?

Deleted
()
Ответ на: комментарий от anonymous

Если глянешь выше то увидишь что для определения тензора координаты не нужны. Есть линейное пространство, есть его элементы, есть отображения.

Наличие возможности координатного представления и правил согласования с ним - это следствие линейности. Для самого тензора как объекта вопроса об инвариантности в принципе не стоит, поскольку про координаты он ничего не знает. Это уже твоя проблема, что при использовании этого объекта ты его пытаешься как-то приземлить в R^n и при этом приземлении возникают неоднозначности.

alpha ★★★★★
()
Ответ на: комментарий от Deleted

У тензора два типа входных параметров: векторы и линейные функции. И тех и тех может быть произвольное число.

Поэтому и размерность его двумя числами задается: первое - сколько векторов, второе - сколько функций (ковекторов).

Поэтому например скалярное произведение двух векторов - это тензор ранга (2,0): два вектора на вход, число на выход.

А вот тензор ранга (1,1) на вход берет вектор и функцию. А на выход дает опять число. Например можно определить такой 1,1-тензор: для любой пары (вектор, функция) возвращаем результат применения этой функции к этому вектору умноженный на 3.

alpha ★★★★★
()
Последнее исправление: alpha (всего исправлений: 1)
Ответ на: комментарий от Deleted

Не шарю в физике, посмотри тред, тут явно кто-то лучше разбирается в этом. Я инженер-программист и шарю только в том, что касается понятия тензора в ML (ну и в дискретке, которой в аспирантуре занимался).

Norgat ★★★★★
()
Ответ на: комментарий от alpha

Проблема в том что когда мы работаем с конкретными примерами, а это обычно значит с простыми вещественными пространствами, то и вектора и функции - все записываются тем самым «кортежем» из n чисел.

И если еще и скалярное произведение тривиально, то линейные функции и векторы можно отождествлять. И в итоге ты получаешь три страницы координатной записи и умножения матриц, а проследить где была функция, где вектор, где само пространство, а где сопряженое, где матрица оператора, а где скалярное произведение и не стал ли ты уже умножать яблоки на апельсины становится не так просто.

Но это всё пожалуй только практикой лечится.

alpha ★★★★★
()
Последнее исправление: alpha (всего исправлений: 1)
Ответ на: комментарий от alpha

линейная функция это собственно тоже тензор и векторы тоже

и даже небо, и даже Аллах

lovesan ★★
()
Ответ на: комментарий от Deleted

Вроде всё понятно))

Задавили ребенка авторитетом. Теперь вырастет тряпкой без собественной позиции.

anonymous
()
Ответ на: комментарий от Norgat

Я тоже против того, чтобы давать точные определения тем, кому это не нужно. Но давать ошибочные представления тоже не нужно.

Повторюсь, не неточные, а ошибочные.

Octagon
()
Ответ на: комментарий от Octagon

Я тоже против того, чтобы давать точные определения тем, кому это не нужно.

Точные определения возможны только в формальных языках. Все остальное средневековое словоблудие.

anonymous
()
Ответ на: комментарий от Octagon

Посмотри ссылку на TensorFlow доку, если человек увидел тензор из TF, а не из физики\математики, то я написал именно то, что ему нужно.

Norgat ★★★★★
()
Ответ на: комментарий от Norgat

Слушай, да, я неправ.

Tensorflow tensor и тензор - разные вещи, все таки. Не знал.

Octagon
()
Ответ на: комментарий от anonymous

Потому что нет тут математиков(разве что альфа). Они делом заняты, а не твоей форумной болтовнёй.

anonymous
()
Ответ на: комментарий от alpha

Вау. Всё бы так объясняли, и, может быть, тогда люди перестали бы бояться этой вашей математики.

anonymous
()
Ответ на: комментарий от anonymous

Потому что нет тут математиков(разве что альфа).

Его еще в предыдущем треде про математику слили. Этот вообще стихами отвечал.

Они делом заняты, а не твоей форумной болтовнёй.

Это вообще-то площадка для программистов, созданная программистами. И мы тут общаемся при помощи точных формальных языков. И когда кто-то внезапно начинает изливать потоки бессвязного бреда, это немного шокирует.

anonymous
()
Ответ на: комментарий от anonymous

Ну, во-первых, Неадекватный Анонимус тут в чем-то прав - это всё-таки словоблудие.

Оно полезное, помогает вырабатывать правильную интуицию, но без подкрепления настоящей практикой остается слишком поверхностным.

То есть тут хорошо, поговорили, но дальше надо сесть и считать примеры вычисления значений конкретных тензоров на конкретных данных, и потом свертки, и дуальные вектора.. Да банально матрицы четыре на четыре поперемножать и пообращать недельку.

А во-вторых, в хороших ВУЗах хорошие преподаватели так и объясняют. И когда тут заходит порой спор на тему нужен ли университет или всё можно по книжкам изучать, то вот тут и разница: Университет - это место, где много и долго «словоблудят» друг с другом на тему того что строго изложено в книжках. И этим ценен.

Так что если занимаетесь самообразованием, то кроме книжек стоит какой-то аналог курилки с тематическими дискуссиями искать.

alpha ★★★★★
()
Ответ на: комментарий от alpha

У программистов никакого словоблуда нет ни в каком виде. Везде код. Все строго и формально, стройно и красиво.

Пока математики носятся с идиотской ZFC, никакие «строгие» учебники не помогут. Пора бы уже сваливать из «рая», созданного Кантором.

anonymous
()
Ответ на: комментарий от alpha

Кстати, это тоже не то, чтобы правильно.

Скалярное произведение - это внезапно тензор ранга (0;2), а тензор ранга (1;1) - это вообще линейный оператор (поворот, например).

Так что нет, не вяжется.

Octagon
()

Посмотрел что тут пишут, скажу так, понять что такое тензор можно из происхождения этого исчесления.

Тензорное исчесление первоначально разрабатывалось исключительно для описания упругих свойств кристаллов.
Специфика в том, что у кристалла упругость и твёрдость зависят от направления приложенного усилия относительно кристалической решётки.
И вот тензор это какая-то математическая штука, судя по всему векторная, которая эти зависящие от направления свойства способна описать единым и непротиаоречиаым образом, без разрывов потока мыслей и всяческих костылей.

torvn77 ★★★★★
()
Последнее исправление: torvn77 (всего исправлений: 2)
Ответ на: комментарий от Octagon

Скалярное произведение - это внезапно тензор ранга (0;2),

0,2 он или 2,0 это вопрос какую размерность первой называть. Раз уж я сначала векторы первыми параметрами называла, у меня получился 2,0. В стандартном определении другой порядок.

а тензор ранга (1;1) - это вообще линейный оператор (поворот, например).

А тут никакой ошибки нет.

да, тензор 1,1 - это оператор, но в то же время именно он же и есть отображение пары (вектор, функция) в числа. Это эквивалентные сущности.

На радость анонимусу, пара формул:

Вот есть оператор из векторного пространства в него же:

 A: вектор u -> вектор v
И есть тензор:
 T: (вектор u, функция f) -> число t 
Так вот каждому оператору можно поставить в соответствие тензор. Просто берем и определяем:
Для всех u,f пусть t(u,f) = f(A(u))
Ну и обратно для каждого такого тензора T можно найти такой оператор A.

alpha ★★★★★
()
Ответ на: комментарий от alpha

Раз уж я сначала векторы первыми параметрами называла, у меня получился 2,0.

Если вектор - тензор (1;0), то скалярное произведение (как любая билинейная форма) - (0;2). Проверить нетрудно - достаточно посмотреть, как преобразовывается матрица Грама при смене координат.

да, тензор 1,1 - это оператор, но в то же время именно он же и есть отображение пары (вектор, функция) в числа.

Е-мае.

Линейный оператор отображает вектор в вектор.

Octagon
()
Ответ на: комментарий от alpha

Так вот каждому оператору можно поставить в соответствие тензор. Просто берем и определяем:

Фигня какая-то. Тензор (1;1) не может из вектора сделать не вектор. Зачем f?

Octagon
()
Ответ на: комментарий от Octagon

Любой тензор - это отображение N векторов и M ковекторов (ну точнее N ковекторов и M векторов) в числа.

Это общее определение тензора произвольного ранга. Оно верно и для 0,1 и для 1,1 и для 2,0 и для 15,42.

Однако далее у нас есть развитие этой идеи.

Если достаточно долго смотреть на определение 1,1 тензора

T: (вектор u, функция f) -> число t = t(u, f)
то можно заметить, что при любом фиксированном u наш тензор превращается в функцию
t_u: функция f -> число t_u(f) = t(u, f)
Заметим что t_u - это линейная функция на пространстве линейных функций.

Тогда можно посмотреть ещё чуть-чуть и понять что наш тензор T если его рассматривать как функцию только на векторах имеет вид

T: вектор u -> функция на линейных функциях t_u = t(u, .)
Для программеров: t_u = lambda f: t(u, f)

Но фишка в том что пространство линейных функций на линейных функциях канонически изоморфно исходному векторному пространству. Так что t_u - это одновременно и просто вектор.

Так что тензор типа 1,1 - если смотреть на него как на функцию двух переменных то он отображает пару (вектор, функция) в число. А если смотреть на него как на функцию только первого параметра, то он отображает вектор в «ко-ковектор», и слава богу что эти два ко аннигилируют и дают нам просто вектор в итоге.

alpha ★★★★★
()
Ответ на: комментарий от alpha

В общем за это мы и любим алгебру: функции являются точками, точки являются функциями. Всё дело в выборе правильной точки зрения :)

alpha ★★★★★
()
Ответ на: комментарий от alpha

Ну, во-первых, Неадекватный Анонимус тут в чем-то прав - это всё-таки словоблудие.

Оно полезное, помогает вырабатывать правильную интуицию, но без подкрепления настоящей практикой остается слишком поверхностным.

Может и так, но я, читая ваше объяснение, представлял в голове код на С++ - это и есть моя практика.

anonymous
()
Ответ на: комментарий от anonymous

Причем это хорошо иллюстрируется данным тредом. Каждый математик что-то свое лепечет, и друг друга они понят не могут.

Программисты бы уже давно код повыкатывали.

… и херами друг друга обложили. Достаточно зайти в любой срач в Development. Кода много, толку мало. У каждого свой божок.

Virtuos86 ★★★★★
()
Ответ на: комментарий от Virtuos86

и херами друг друга обложили.

Нихера. Кодом как раз все споры успешно завершаются. И тут у нас есть несколько показательных примеров.

Анонiмус (не путать с анонимусом), который возомнил себя крутым философом, математиком и программистом, флудил темами по несколько раз в день, и на запрос подкрепить свои изливания кодом, решил запилить модель солнечной системы. Но не осилил даже круг нарисовать. А пошел бы в математики, был бы сейчас каким-нибудь важным профессором.

Другой называет себя Царем всем программистов, хвастается идеальными скиллами и регулярно покрывает ЛОР простынями о собственном величии. Но как только дело доходит до кода, сразу становится паенькой и вежливо просит программистов не пинать ногами по лицу. Что примечательно, математика у нас тоже самозванная «царица» наук.

Или возьми Лавсана. Тоже много писал про лисп в геймдеве, и таки осилил нарисовать треугольник. Сразу видно, что далеко продвинутее.

О таком математики мечтали веками. У них хер поймешь - то ли идиот, то ли сумашедший, то ли мошенник. Каждый балаболит, как хочет, и никак это балабольство не проверить.

anonymous
()
Ответ на: комментарий от Virtuos86

Не надо слушать анонимуса.

У него равно далекие от здравого смысла представления о беседах как программистов, так и математиков.

alpha ★★★★★
()
Ответ на: комментарий от alpha

Для самого тензора как объекта вопроса об инвариантности в принципе не стоит, поскольку про координаты он ничего не знает.

И это и есть инвариантность. Содержащаяся в определении.

Это уже твоя проблема, что при использовании этого объекта ты его пытаешься как-то приземлить в R^n и при этом приземлении возникают неоднозначности.

Никаких неоднозначностей не возникает. Если у вас есть объект, то он _гарантированно_ инвариантен. Неинвариантных объектов не существует, их нельзя определить «снаружи» пространства, т.к. обязательно должна быть привязка к координатам. Например, о векторе скорости вне координатной системы говорить можно. F вот о векторе угловой скорости - уже нет. Нету такого объекта как целого, он в разный координатных системах - свой.

anonymous
()
Ответ на: комментарий от alpha

а проследить где была функция, где вектор, где само пространство, а где сопряженое, где матрица оператора, а где скалярное произведение и не стал ли ты уже умножать яблоки на апельсины становится не так просто.

И, что самое главное, совершенно не нужно. Тензорное исчисление ровным счетом для того и было создано, чтобы не следить за подобными вещами, а сам формализм намеренно сделан таким, чтобы стереть все различия и позволять свободно теребить индексы, не заморачиваясь, над каким именно объектом ты проводишь операции.

anonymous
()
Ответ на: комментарий от alpha

У него равно далекие от здравого смысла представления о беседах как программистов, так и математиков.

Никаких предсталений, только факты. Беседу математиков мы можем наблюдать в этом треде. Про Царя можно проверить в соседнем треде. Лавсан тут уже отметился, может показать треугольник.

anonymous
()
Ответ на: комментарий от alpha

Но фишка в том что пространство линейных функций на линейных функциях канонически изоморфно исходному векторному пространству.

В конечномерном случае.

anonymous
()
Ответ на: комментарий от anonymous

И это и есть инвариантность. Содержащаяся в определении.

Если так рассуждать, то инвариантность содержится в определении вектора и векторного пространства.

Только это уже пустые рассуждения на самом деле.

alpha ★★★★★
()
Ответ на: комментарий от alpha

Мечтай.

Если вы диленанты, то надо вообще в тряпочку помалкивать, а не «беседы» разводить.

anonymous
()
Ответ на: комментарий от anonymous

.. и за это тензорные исчисление любят физики и не уважают чистые математики.

Потому что да, можно нырнуть в формализм и забыть о чем была речь.

Когда задача ставится как «посчитать некоторую величину» это удобно. А когда задача исследовательская - нужно понимать где ты и что делаешь. Чтобы не получилось так что ты неделю высчитываешь тензор кривизны в каких-то диких координатах, когда давно понятно по другим признакам что твое пространство - сфера.

Во французской математической школе например классический тензорный формализм вообще не используют. Никогда не пишут тензор кривизны как R^i_jkl, только R(X,Y,Z)(W).

У меня по этому поводу было очень забавное общение с рецензентами.

alpha ★★★★★
()
Ответ на: комментарий от alpha

Во французской математической школе например классический тензорный формализм вообще не используют.

Как я и предсказывал, пошли ссылки на местечковых авторитетов.

anonymous
()
Ответ на: комментарий от Twissel

А ты ваще чьих будешь?

Программист. Мы за современные формальные языки и международные стандарты.

Мы против пережитков средневековья, когда нужно совершить сходку во французкую школу, где авторитеты посвятят тебя в математики через традиционную процедуру битья веслом по жопе.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.