Задать вопрос
  • Какая разница между валидационным и тестовым наборами данных?

    Maksim_64
    @Maksim_64
    ML Engineer
    Смотри в теории машинного обучения есть такая важная тема как Resampling Methods. Это методы случайной выборки из данных которые у тебя есть. Есть два основных это Cross Validation и Bootstrap. Обычно во всяких обучающих материалах используется Cross Validation да и на практике он тоже очень популярен. Что он из себя представляет мы берем например делим случайным образом датасет на 5 частей. Сначала треним на 4 потом тестим на одном что остался, потом на других 4 и тестим на одном что остался и т.д. Так вот каждый такой набор (на котором мы тестим) называется валидационным набором. Например наша метрика MSE мы получим 5 MSE по каждому валидационному набору потом обычно берут среднее по ним.

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

    Используют и то и то. Это инженерное решение и ты будешь видеть оба подхода. Ну и на каких то обучающих историях, ты можешь увидеть отсутствие кросс-валидации и только разбиение train_test_split.

    В идеале все выглядит вот так. Единственное существует огромное количество разных кросс-валидаций.

    64bcbf8e217a9092904980.png

    Это пример где кросс-валидация используется для тюнинга гиперпараметров, но точно также она будет использоваться и для других целей, каждый синий Fold это и есть валидационный набор.
    Ответ написан
    4 комментария
  • Почему процессоры gpu не любят разветвлений в программе?

    @vadimr
    Процессор GPU выполняет так называемую векторно-конвейерную обработку. Это означает, что у него имеется набор конвейеров для векторов, то есть связанных между собой функциональных узлов, которые по очереди совершают однотипные операции над элементами массивов. Представьте себе конвейер на автомобильном заводе – на первом рабочем месте на шасси привинтили двигатель, потом конвейер подвинулся, стали там же прикручивать двигатель на следующее шасси, а на первое шасси в это время на втором рабочем месте устанавливают коробку передач, и т.д. Так же и в векторно-конвейерном процессоре. Он построен на том, что на каждом этапе конвейера выполняются одинаковые операции над разными элементами вектора. Компилятор разворачивает операции с массивами или простой цикл в такую конвейерную обработку. А если там будут условные операторы, всё сломается. Получится, что рабочий иногда должен монтировать двигатель, а иногда клетку с хомячком вместо него. Разброд и шатания, тем более, что эти операции могут быть разными по продолжительности. Конвейер так не работает. Поэтому условная операция будет вызывать очень длительную перенастройку контейнера на новую последовательность операций обработки.
    Ответ написан
    4 комментария
  • Как узнать память видеокарты и ее быстродействие?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Такие библиотечки как CUDA и OpenCL в части инициализаци должны выдавать сведенья о железе.
    Может эти сведенья будут очень high-level но должны быть.
    Ответ написан
    9 комментариев
  • Как сделать чтобы mysql хранил таблицы в ОЗУ?

    iMedved2009
    @iMedved2009
    Не люблю людей
    16.3 The MEMORY Storage Engine

    З.Ы. Но вы явно чего то не то замыслили.
    Ответ написан
  • Где браузер хранит данные Web Storage?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    \AppData\Local\Google\Chrome\User Data\Default\Local Storage

    конечно можете, стиллеры же получают ))))))))))
    Ответ написан
    2 комментария
  • Как на python эмулировать клавиатуру и мышь?

    Pakonigoosy
    @Pakonigoosy
    Разработчик ПО
    Есть библиотеки mouse и keyboard
    Читайте документацию, они очень мощные
    Ответ написан
  • Как создавать сценарии тестирования?

    saboteur_kiev
    @saboteur_kiev
    software engineer
    Сценарии тестирования обычно делает тестировщик, зачастую senior или смотря какая квалификация нужна.
    В тестом взаимодействии с разработчиками и аналитиками, чтобы покрыть все требования и упростить тестирование и его автоматизацию.

    По сценарию уже либо пишутся автоматические тесты, либо их выполняют рядовые тестировщики.
    Ответ написан
    4 комментария
  • Как создавать сценарии тестирования?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    тестировщик читая постановщика )))

    что такое тесты:
    лююая система сложна, пилится не одним (да и одним тоже, посмтрите на код через полгода - иногда и комментирвание не помогает вспомнить что оно и зачем) а командой
    птому после изменения в одном месте может сломаться в другом

    вот тесты и покрывают проверки перед выкаткой - а все ли в "в другом" по-прежнему?

    сюда же добавляются редкие до которых не додумыватся никто (а додумывание с опытом приходит и то... ) и находят уже пользователи

    + критически юридически зависимые (например галка о подписке, запрос кук , ГДПР и проч) - их вообще хз кто из техников додумается проверить, и делают после пинка сверху в частности
    Ответ написан
    4 комментария
  • Какие есть программы для размещения рекламы на видеоролике?

    opium
    @opium
    Просто люблю качественно работать
    так у многих видео редакторов есть пакетная работа с видео, помню много лет назад так вставлял в тысячи видосов логотип
    Ответ написан
    Комментировать
  • Присутствуют ли в TypeScript ООП-штуки, из тех что описываются в книжках по паттернам проектирования?

    bingo347
    @bingo347 Куратор тега TypeScript
    Crazy on performance...
    Дизайн паттерны абстрагированы от языка и работают практически везде одинаково. Некоторый отпечаток может наложить на них динамическая типизация, как в JS, но даже тут сильно ничего не поменяется.
    Кроме того, в корне не верно приписывать паттерны к ООП. Они абсолютно одинаково работают во всех парадигмах, за некоторыми небольшими исключениями.
    Ну и наконец, ООП часть в TS прямо слизана с Java, так что многие примеры будут даже выглядеть похоже.
    Ответ написан
    3 комментария
  • Как можно убедиться, что на сервере работает опенсурсный код?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Нет.
    Ответ написан
    Комментировать
  • Какие есть стандарты и технологии в разработке софта и сертификация компаний-разработчиков?

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

    Ещё софт в некоторых случаях должен проходить какую-то сертификацию, но это относится только к транспорту, медицине, и всяким государственным штукам.
    Например есть SPICE и ASPICE, которые регламентируют, как должен вестись процесс разработки и тестирования.
    Есть ещё вроде какой-то ISOшный стандарт, который описывает этапы жизненного цикла, но номер не помню
    Ответ написан
  • Используют ли в нейронных сетях вычисления с пониженной разрядностью?

    @AlexSku
    не буду отвечать из-за модератора
    Вообще-то GPU как раз обрабатывает 4 32-битных (float) чисел за один раз (специальный 128-битный формат при установке спец. флага).
    typedef __m128 XMVECTOR
    При передаче через параметры функции используются FXMVECTOR, GXMVECTOR, HXMVERCTOR и CXMVECTOR, а сама функция должна иметь тип вызова XM_CALLCONV.
    Ответ написан
  • Используют ли в нейронных сетях вычисления с пониженной разрядностью?

    freeExec
    @freeExec
    Участник OpenStreetMap
    Библиотека от NVIDIA поддерживает только float(32) и double(64).
    Можно конечно велосипедить на байтах, но зачем, точность ведь никакущая?
    Ответ написан
  • Какая формула аппроксимации многомерными полиномами?

    @antares4045
    решать проблему в лоб сильно затратно по памяти: лучше гляньте как задачу регрессии оптимизируют mashine learning библиотеки. но в лоб
    на numpy это выглядит так:

    XtX = X.T * X
    result = inv(XtX).dot(X.T).dot(Y)

    X = матрица MxN*K где строкам соответствуют точкам а столбцам координаты возведённые в соответствующие степени
    Y = вектор столбец из M нулей

    Matrix.T - транспонирование матрицы
    inv(Matrix) -- функция inv вычисляет обратную матрицу
    MatrixA.dot(MatrixB) -- вычисляет произведение матриц

    На выходе получаете вектор result -- коэффициэнты полинома соответствующие колонкам матрицы X (Соответственно, если хотите, чтобы свободный коэфициент был, столбец единиц в матрице X должен быть)

    ещё раз обращу внимание, что матрица XtX имеет размерность MxM что при попытке обработать любые реальные данные с миллионами измерений просто сожжёт вам то, на чём вы там считаете.

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

    UPD:

    После некоторых посиделок оформил всё в такую конструкцию:
    import numpy as np
    
    K = 2 #степень целевой плоскости
    points = np.array([[a, 5 + 2*a + 6 * a**2] for a in range(0, 60)]) # точки, по которым строим
    
    
    
    class Symbolic:
      def __init__(self, letter=None):
        self.letters = dict() if letter is None else {letter : 1}
      def addLetter(self, letter, power=1):
        if letter not in self.letters:
          self.letters[letter] = 0
        self.letters[letter] += power
      def __pow__(self, pow):
          res = Symbolic()
          for letter in self.letters:
            res.letters[letter] = self.letters[letter] * pow
          return res
      def __mul__(self, right):
        res = Symbolic()
        for letter in self.letters:
          res.addLetter(letter, self.letters[letter])
        for letter in right.letters:
          res.addLetter(letter, right.letters[letter])
        return res
      def __repr__(self):
        return '*'.join(map(lambda letter: f'{letter}**{self.letters[letter]}', self.letters.keys()))
    
    def pointsToPower(points, power):
      result = points ** power
    
      if points.shape[1] > 1 and power > 1:
        for startpower in range(power-1, 0, -1):
          for index in range(points.shape[1] - 1) :
            base = np.array(points[:,index]) ** startpower
            submatrix = pointsToPower(
                points[:, index+1:],
                power - startpower
            )
            result = np.hstack([result, np.array([submatrix[lineIndex, :] * base[lineIndex] for lineIndex in range(base.shape[0])])])
      return result
    
    def pointsToX(points, K=1):
      return np.hstack([
            #  np.array([[1]] * points.shape[0]), 
            *[pointsToPower(points, power=i+1) for i in range(K)]
        ])
    
    
    def krammer(X, sigma=1):
      XtX = X.T.dot(X)
      baseDet = np.linalg.det(XtX)
      if baseDet == 0:
          return [[None]]
      Y = np.array([[sigma] * X.shape[0]]).T
      return np.linalg.inv(XtX).dot(X.T).dot(Y)
    
    
    X = pointsToX(points,K)
    values = krammer(X).T[0]
    if values[0] is None:
        print('''Обратной матрицы не существует, и решить систему матричным методом невозможно. 
    В этом случае система решается методом исключения неизвестных (методом Гаусса). 
    Но его реализовывать мне влом''')
    
    symbols = pointsToX(np.array([[Symbolic(chr(ord('a') + i)) for i in range(points.shape[1])]]),K)[0]print('Уравнение целевой плоскости:')
    print(*[f'{value} * {symbol}' for symbol,value in  zip(symbols, values)], sep=' + \n', end=' = 1')
    Ответ написан
    8 комментариев
  • Можно ли на коллокейшен поставить сервер с GPU?

    Zoominger
    @Zoominger
    System Integrator
    Можно арендовать в ЦОД стойку или ячейку и уставить туда, что хотите.
    Не припоминаю, чтобы можно было в арендованные серверы ставить какое-то своё железо и чтобы это было дешевле, чем просто арендовать сервер с уже установленной железкой.
    Ответ написан
    5 комментариев
  • Как пользоваться ассемблером Intel для GPU?

    @rPman
    Если я верно понимаю начинать смотреть тут там же есть sdk для загрузки и opencl tool, не удивюсь если все необходимое там уже есть

    можно заглянуть сюда

    зы а вы с какой целью интересуетесь?
    Ответ написан
    Комментировать
  • Какая память в GPU быстрее, глобальная или константная?

    @rPman
    Память в видеокарте не одним единым блоком, а кучей небольших, привязанных (и то не линейно) к своим процессорным ядрам.

    Понять без понимании логики твоего кода когда и что будет быстрее сложно, к примеру последовательное чтение и такая же последовательная запись по уму наиболее быстрая, а вот случайный доступ максимально не эффективный (на порядок).
    Ответ написан
    2 комментария
  • Какая память в GPU быстрее, глобальная или константная?

    https://habr.com/ru/post/55461/
    Глобальная - самая медленная
    Константная - одна из самых быстрых

    В каком отношении быстрее - фиг знает. Попробуйте написать бенчмарк, который посчитает пропускную способность.
    Как я понял - если можно не использовать глобальную память, лучше её не использовать.
    Ответ написан
    Комментировать