Задать вопрос
  • Как сделать чтоб 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мс
  • Нейросети обучение, почему может падать процент распознаваний?

    @saneok44 Автор вопроса
    Понял, буду копать дальше в этом направлении
  • Нейросети обучение, почему может падать процент распознаваний?

    @saneok44 Автор вопроса
    У меня описан метод обратного распространения ошибки. Иначе бы распознавание из 60000 изображений MNIST было бы на уровне как повезет. А так все присутствует, что надо нейронки. Скорость обучения стоит 0.15. Если я вас правильно понял.