• Как избежать коллизии по данным?

    @saneok44 Автор вопроса
    Akina, На уровне интерфейса это нереально. Заблокировать web интерфейс? Пользователь обновит страницу и повторит. Один вариант крутится в голове это сделать свой планировщик, но это геморно втискивать его уже в работающую систему.

    Вы правильно сказали все, куча разрозненных операций, неконтролируемых sql. Весь контроль идет на бекенде (в коде) не в транзакциях
  • Как избежать коллизии по данным?

    @saneok44 Автор вопроса
    Akina, это вы говорите про полную транзакцию, которая проверяет и создает объект в одной транзакции. У нас все операции разбиты на мелкие транзакции. Транзакция на проверку, транзакция на запись, транзакция. Т.е. например таблица обджект обладает 5 поляуми. Объект заполняется не одним запросом, а мелкими. Например чтобы создать тело объекта, я проверю некоторое условие в базе, потом отправлю трнзакцию на создание объекта т.е. выдам ему ID потом имея ID создам в таблице Свойств уникальную пару ID, СВойство ID, и запишу например число. Как буд то вы работает с ООП. Мелкие запросы. Вот тут и возникает параллельный доступ к данным и коллизии.
  • Как избежать коллизии по данным?

    @saneok44 Автор вопроса
    есть главный объект (узел) у него дочернии объекты со своими свойствами. Свойства уникальны в пределах объекта. Т.е. уникальность на уровне свойств имеется. Уникальность у объекта только по id. Из за подвисуна может создасться два таких объекта. Потому что пользователь не дождался предыдущей транзакции, обновил страницу и нажал создать снова
  • Как избежать коллизии по данным?

    @saneok44 Автор вопроса
    res2001, но у нас уникальность на уровне свойств объекта. От создания самого объекта это не спасет
  • Как избежать коллизии по данным?

    @saneok44 Автор вопроса
    Akina, но у нас уникальность на уровне свойств объекта. От создания самого объекта это не спасет
  • Как избежать коллизии по данным?

    @saneok44 Автор вопроса
    Да так и есть. Это спасло. Но хотелось бы больше контроля над такими ситуациями
  • Как избежать коллизии по данным?

    @saneok44 Автор вопроса
    У нас было раньше два сервера. Один из которых был старый и на нем были некоторые ресурсозатратные операции. Как то жили и вытягивали. Потом по определенным причинам, пришлось объединить базы на один сервер. И при разовой высокой нагрузке по расчету годовому, стали наблюдаться как раз таки проблемы. Что транзакция стала подвисать, а пользователь он такой неудержимый. Обновляет страницу и и снова создает запрос на создание объекта из за чего появляется ошибка по уникальному ключу
  • Как сделать чтоб matplotlib не сжимал график по оси x с датой?

    @saneok44 Автор вопроса
    в день 20 значений интервал между значениями 40 минут

    Time OU d6
    0 2021-04-01 08:40:00 18.09250 2.653730
    1 2021-04-01 09:20:00 17.83270 2.652515
    2 2021-04-01 10:00:00 17.76485 2.875300
    3 2021-04-01 10:40:00 17.78840 2.779075
    4 2021-04-01 11:20:00 16.43675 2.252920
    5 2021-04-01 12:00:00 16.77850 2.321055
    6 2021-04-01 12:40:00 16.79925 3.021640
    7 2021-04-01 13:20:00 16.69860 2.683005
    8 2021-04-01 14:00:00 16.40585 2.653540
    9 2021-04-01 14:40:00 16.08060 2.379130
    10 2021-04-01 15:20:00 18.73435 3.918785
    11 2021-04-01 16:00:00 18.83020 3.817415
    12 2021-04-01 16:40:00 18.50240 3.636395
    13 2021-04-01 17:20:00 19.26115 3.756880
    14 2021-04-01 18:00:00 19.50810 3.536345
    15 2021-04-01 18:40:00 19.75310 3.722755
    16 2021-04-01 19:20:00 18.07270 3.473140
    17 2021-04-01 20:00:00 19.30630 3.297215
    18 2021-04-01 20:40:00 19.02105 3.040605
    19 2021-04-01 21:20:00 19.29635 3.272595
    20 2021-04-02 08:00:00 19.30625 3.240815
    21 2021-04-02 08:40:00 18.83615 2.918255
    22 2021-04-02 09:20:00 18.83660 3.359505
    23 2021-04-02 10:00:00 18.50030 3.057500
    24 2021-04-02 10:40:00 18.48485 3.094090
    25 2021-04-02 11:20:00 18.05570 2.888760
    26 2021-04-02 12:00:00 18.28705 3.007945
    27 2021-04-02 12:40:00 18.88825 2.944240
    28 2021-04-02 13:20:00 19.50575 2.947220
    29 2021-04-02 14:00:00 19.77880 2.882345
    30 2021-04-02 14:40:00 19.94455 2.790485
    31 2021-04-02 15:20:00 19.93390 2.992150
    32 2021-04-02 16:00:00 19.46265 3.011550
    33 2021-04-02 16:40:00 18.73950 2.537625
    34 2021-04-02 17:20:00 18.92845 2.597195
    35 2021-04-02 18:00:00 20.63060 3.120630
    36 2021-04-02 18:40:00 23.42440 3.730985
    37 2021-04-02 19:20:00 38.88130 7.395050
    38 2021-04-02 20:00:00 38.54345 8.752200
    39 2021-04-02 20:40:00 36.09285 7.964350
    40 2021-04-02 21:20:00 36.08195 6.758450
    41 2021-04-03 08:00:00 36.14795 6.896700
    42 2021-04-03 08:40:00 34.83880 7.499700
    21 2021-04-02 08:00:00 18.83615 2.918255
    22 2021-04-02 08:40:00 18.83660 3.359505
    23 2021-04-02 09:20:00 18.50030 3.057500
    24 2021-04-02 10:00:00 18.48485 3.094090
    25 2021-04-02 10:40:00 18.05570 2.888760
    26 2021-04-02 11:20:00 18.28705 3.007945
    27 2021-04-02 12:00:00 18.88825 2.944240
    28 2021-04-02 12:40:00 19.50575 2.947220
    29 2021-04-02 13:20:00 19.77880 2.882345
    30 2021-04-02 14:00:00 19.94455 2.790485
    31 2021-04-02 14:40:00 19.93390 2.992150
    32 2021-04-02 15:20:00 19.46265 3.011550
    33 2021-04-02 16:00:00 18.73950 2.537625
    34 2021-04-02 16:40:00 18.92845 2.597195
    35 2021-04-02 17:20:00 20.63060 3.120630
    36 2021-04-02 18:00:00 23.42440 3.730985
    37 2021-04-02 18:40:00 38.88130 7.395050
    38 2021-04-02 19:20:00 38.54345 8.752200
    39 2021-04-02 20:00:00 36.09285 7.964350
    40 2021-04-02 20:40:00 36.08195 6.758450
    41 2021-04-02 21:20:00 36.14795 6.896700
    42 2021-04-03 08:00:00 34.83880 7.499700
  • LSTM keras очень плохой прогноз после тренировки, что я делаю не так?

    @saneok44 Автор вопроса
    freeExec, пробовал код со статьи
    https://machinelearningmastery.com/how-to-develop-...
    Multiple Parallel Input and Multi-Step Output т.е. подаю 1 семпл размерностью 100 получаю допустим семпл из 50 значений.
    подключил свой датасет и loss уходит в Nun функция активации relu, поменял на tanh в nun перестало уходить, но все графики стали себя в какой то мере повторять разница только по высоте графика, но геометрически они себя повторяли. На форумах пишу либо это градиентный срыв либо в датасете есть значения Nun. Значений Nun нету проверял. Пробовал делать градиент отсечки 0.5, nun ушел но графики предсказанные такие себе .. все перетыкал даже не знаю где еще подробной инфы почитать
  • LSTM keras очень плохой прогноз после тренировки, что я делаю не так?

    @saneok44 Автор вопроса
    freeExec, так я подаю на вход вектор из 100 значений и жду одно. Потом собираю новый вектор из 100 но выкидываю первое значение и добовляю новое. И так далее добавляя в вектор новые предикты пока вектор полностью не заполнится только новыми значениями. Как будто то у меня уже был вектор из этих значений и я просто двигал окно на N+1 сто раз. Ведь тренинг так же работает у него есть допустим 990 семплов и в каждом последующем семпле окно сдвинуто на N+1. Только тут я делаю новый семпл сам потому что не имею следующих
  • LSTM keras очень плохой прогноз после тренировки, что я делаю не так?

    @saneok44 Автор вопроса
    freeExec, я оставлял 2 таких вопроса, но что то ответов нет либо ни кто толком не знает либо я как то плохо описывал что хотел. Ну вот смотрите у меня есть допустим 1000к датасет я его разбиваю на 990 семплов в каждом 100 значений сиквенции предсказание + одно число и на выходе я получаю (990,1 ) шейп с предскантем сетки. т. Е. Я могу в фит запихать всю выборку потому что знаю ее. П в случае с предсказанием за выборку Я могу подать в предикт только 1 семпл и получить 1 предик. Как получит N +2 число? А для этого формировал новый семпл с этим числом на конце и предсказывал новое и теперь уже два новых числа вхонце семпл и так добавлял новые предсказания в семпл пока оно полностью не заменится новыми предсказанными значениями. Суть такая что я вместо одного раза как в тренинге передав 990 семплов получал 990 предиктов делал итеративный вызыв предикт N кол-во раз чтобы получить N кол-ва предиктов.

    Проблема в том что с тренингом предсказнте сети нормально но вот предсказание за датасет ужасное
  • LSTM прогнозирование на 1 шаг, как спрогнозировать на N шагов?

    @saneok44 Автор вопроса
    И да я делал по тем примерам, и у меня срывало градиент loss: nan
    Пробовал Dropout(0.2) перестало срывать, но по итогу предсказание сводилось к 0
  • LSTM прогнозирование на 1 шаг, как спрогнозировать на N шагов?

    @saneok44 Автор вопроса
    Здравствуйте, у меня второй столбец это показания тока а первый вибрации, я беру окно размером N в котором col1: i ... i+100, col2: i...i+100 и прогнозирую на шаг вперед, таргет значение col1: i+101 и так далее.
    Пример я брал с сайта https://machinelearningmastery.com/how-to-develop-...
  • Нейросеть для прогнозирования неисправности, какую выбрать?

    @saneok44 Автор вопроса
    дела в прогнозировании наперед неисправности, а не тут и сразу
  • Обратное распространение ошибки. Почему такая разница в знаках формулы при одинаковом подходе?

    @saneok44 Автор вопроса
    Да про регулярную нейронку наслышан, ну это хайлвл для меня)
  • С# Taks и Invoke почему то блокируется форма?

    @saneok44 Автор вопроса
    Борис Животное, у меня таски лежат в массиве, и пока есть рабочая такска я не запускаю другие такски. Можно конечно с флагом сделать, но вот почему то решил так)
  • С# Taks и Invoke почему то блокируется форма?

    @saneok44 Автор вопроса
    Кстати про события это тема, чет не додумался про такой подход
  • С# Taks и Invoke почему то блокируется форма?

    @saneok44 Автор вопроса
    Борис Животное,
    private Task NetworkEfficiency()
    {
    return new Task(() =>
    {
    try
    {
    Console.WriteLine("NetworkEfficiency : Start");

    List result = new List();
    List mix = new List();

    if(cuurModeNumber)
    result = Enumerable.Range(0, 10).Select(x => new NeuralNetwork.ResultEffect() { labl = x }).ToList();
    else
    result = Enumerable.Range(0, NeuralNetwork.alf.Length).Select(x => new NeuralNetwork.ResultEffect() { labl = x }).ToList();

    if (rb_numbers.Checked)
    mix = MixArray(mNIST.digitImages.ToList(), mNIST.imagesNumbersPackeg.myImages);
    else
    mix = mix = MixArray(mNIST.imagesLettersPackeg.myImages);

    Invoke((MethodInvoker)(()=>
    {
    progressBar1.Value = 0;
    progressBar1.Minimum = 0;
    progressBar1.Maximum = mix.Count();
    }));

    Stopwatch time = new Stopwatch();
    time.Start();
    for (int i = 0; i < mix.Count; i++)
    {
    result = NeuralNetwork.EfficiencyEvaluation(mix[i].pixels,
    mix[i].width, mix[i].height,
    mix[i].label, result);
    edit = true;

    int pers = (int)((i / (float)mix.Count) * 100f);
    string str = $"{i} / {mix.Count} : ({pers}%)";

    if(time.Elapsed.Milliseconds > 50)
    {
    Invoke((MethodInvoker)(() =>
    {
    progressBar1.Value = i;
    labelCountMNIST.Text = str;
    }));

    time.Reset();
    time.Start();
    }
    }

    int sum_true = 0;
    int count = 0;

    foreach (var item in result)
    {
    count += item.False + item.True;
    sum_true += item.True;
    }

    double percent_true = ((double)sum_true / count) * 100;

    MessageBox.Show($"Успешных распознаваний: {percent_true.ToString("#.##")}%", "Результат");

    Invoke((MethodInvoker)(() => { progressBar1.Value = 0; }));
    Invoke((MethodInvoker)(() => { labelCountMNIST.Text = $"{0} / {0}"; }));

    for (int i = 0; i < result[0].neurons.Length; i++)
    {
    Invoke((MethodInvoker)(()=>
    {
    (flowLayoutPanel1.Controls[i] as OutNeuron).Value = result[0].neurons[i].Value;
    }));
    }

    Console.WriteLine("NetworkEfficiency : End");
    }
    catch (Exception ex)
    {
    MessageBox.Show(ex.Message, "Сообщение");
    }
    });
    }
  • С# Taks и Invoke почему то блокируется форма?

    @saneok44 Автор вопроса
    Решил вопрос установив временной интервал вызова Invoke допустим через 15-30-50мс