Size: a a a

Rust — русскоговорящее сообществo

2020 April 08

NV

Nikita Vilunov in Rust — русскоговорящее сообществo
От системы типов для нейронок в первую очередь хочется, чтобы она умела проверять размерности тензоров, а не лайфтаймы
источник

H

Hadji in Rust — русскоговорящее сообществo
Nikita Vilunov
От системы типов для нейронок в первую очередь хочется, чтобы она умела проверять размерности тензоров, а не лайфтаймы
Само обучение нейронки - это ж не единственная подзадача. Тут тебе и подвезти данные (где-то из БД, где-то из HDFS/S3, где-то нужно напрямую из кафки - для онлайн-обучения, например), всячески эти данные пофильтровать-попреобразовывать, потом обучить, потом применить всякую бизнес-логику поверх. Препроцессинг и постпроцессинг - он и в продакшне будет такой же, например
источник

NV

Nikita Vilunov in Rust — русскоговорящее сообществo
Hadji
Само обучение нейронки - это ж не единственная подзадача. Тут тебе и подвезти данные (где-то из БД, где-то из HDFS/S3, где-то нужно напрямую из кафки - для онлайн-обучения, например), всячески эти данные пофильтровать-попреобразовывать, потом обучить, потом применить всякую бизнес-логику поверх. Препроцессинг и постпроцессинг - он и в продакшне будет такой же, например
И как с обычными бизнес-приложениями, это отлично решится языком с GC
источник

H

Hadji in Rust — русскоговорящее сообществo
Не спорю, что и на питоне можно, впрочем)
источник

АГ

Алексей Герасимов in Rust — русскоговорящее сообществo
Mykyta Nikitenko
Свифт больше интересен своей системой типов. Числодробильные задачи - это вообще редкий кейс, на самом деле
А что там с системой типов. На мой взгляд она хуже растовой, дженерик протоколов нет например
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
У меня компилятор в двух последовательных строчках выводит разный тип для одного значения.
error[E0308]: mismatched types
 --> src/list.rs:94:13
  |
94 |         let () = clone;
  |             ^^ expected struct `list::List`, found `()`
  |
  = note: expected struct `list::List<T>`
          found unit type `()`

error[E0308]: mismatched types
 --> src/list.rs:95:18
  |
95 |         IntoIter(clone)
  |                  ^^^^^ expected struct `list::List`, found `&list::List<T>`
  |
  = note: expected struct `list::List<T>`
          found reference `&list::List<T>`

В строчке 94 я делаю let () = clone и он мне говорит, что тип clone — это list::List<T>
В строчке 95 я делаю IntoIter(clone) и ВНЕЗАПНО тип clone — это &list::List<T>
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
Причём clone получен методом, собственно, клонирования и откуда взялся референс я не понимаю
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
error[E0308]: mismatched types
 --> src/list.rs:94:23
  |
94 |         let _: Self = self.clone();
  |                ----   ^^^^^^^^^^^^ expected struct `list::List`, found `&list::List<T>`
  |                |
  |                expected due to this
  |
  = note: expected struct `list::List<T>`
          found reference `&list::List<T>`

В #[derive(Clone)] что-то пошло не так
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=3869ca6d7f767c3cc6dcb66d1a90defe
Минимальный пример.
Вероятно, туплю, но что я делаю не так?
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
Можно подумать, что дело в том, что T не клонируемый (и where T: Clone действительно чинит ситуацию), но Rc<T> не помогает:
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=e4321cc6b206df75d55c96e16c1dcfad
источник

ИЛ

Иван Лещенко in Rust — русскоговорящее сообществo
Emmanuel Goldstein
https://play.rust-lang.org/?version=stable&mode=debug&edition=2018&gist=3869ca6d7f767c3cc6dcb66d1a90defe
Минимальный пример.
Вероятно, туплю, но что я делаю не так?
Возможно оно
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
Ответ:
#[derive(Clone)] багованный, экспандится в полный бред и не работает в общем случае.
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
Иван Лещенко
Возможно оно
И, видимо, срабатывает вот этот Clone, да.
источник
2020 April 09

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
Поздравьте меня, у меня thread panicked while panicking И SIGILL в safe-коде
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
Так SIGILL это еще не обязательно UB.
Возможно это просто попытка рантайма суициднуться
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
Я пытался однажды понять, как работает abort, и ничего не понял.
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
Я начал понимать
У меня Drop вызывает функцию, которая паникует
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
В панике вызывается Drop, Drop паникует и всё летит к чёрту
источник

M

Marat in Rust — русскоговорящее сообществo
в общем случае выброс исключения в деструкторе на платформах без прокладки в виде VM - это пипец и нарушение консистентности
источник

BD

Berkus Decker in Rust — русскоговорящее сообществo
Hadji
Ну и, к слову, если уж гугл взялся за идею отойти от питончика, как основного языка тензорфлоу, то явно есть спрос на это среди их разработчиков)
меня свифт бы вполне устроил - он прост почти как питон, но при этом гораздо суровее типизирован и быстрее на порядки
источник