Как я могу исправить тонкие линии Chart.js и десятичные значения по оси Y? [Дубликат]

Я тоже наткнулся на эту проблему, и ниже я понял.

При обучении RNN (LSTM или GRU или ванили-RNN) трудно выполнять последовательности переменной длины. Например: если длина последовательностей в партии размером 8 [4,6,8,5,4,3,7,8], вы будете заполнять все последовательности, и это приведет к 8 последовательностям длины 8. Вы бы закончите выполнение 64 вычислений (8x8), но вам нужно было выполнить всего 45 вычислений. Более того, если вы хотите сделать что-то необычное, как использование двунаправленного RNN, сложнее будет выполнять пакетные вычисления только путем заполнения, и вы можете в конечном итоге сделать больше вычислений, чем требуется.

Вместо этого pytorch позволяет нам упаковать последовательность, внутренне упакованная последовательность является кортежем из двух списков. Один содержит элементы последовательностей. Элементы чередуются по временным шагам (см. Пример ниже), а другие содержат размер каждой последовательности размера партии на каждом шаге. Это полезно для восстановления фактических последовательностей, а также для того, чтобы сообщать RNN, что такое размер партии на каждом временном шаге. Это было указано Аароном. Это можно передать в RNN, и он будет внутренне оптимизировать вычисления.

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

 a = [torch.tensor([1,2,3]), torch.tensor([3,4])]
 b = torch.nn.utils.rnn.pad_sequence(a, batch_first=True)
 >>>>
 tensor([[ 1,  2,  3],
    [ 3,  4,  0]])
 torch.nn.utils.rnn.pack_padded_sequence(b, batch_first=True, lengths=[3,2]
 >>>>PackedSequence(data=tensor([ 1,  3,  2,  4,  3]), batch_sizes=tensor([ 2,  2,  1]))
26
задан mohsinali1317 8 June 2016 в 11:07
поделиться

2 ответа

в chartjs 2.x вы можете передать опцию для поля userCallback в поле гаджета yaxis. В этом случае вы можете проверить, является ли ярлык целым числом

, здесь приведен пример

 options = {
     scales: {
         yAxes: [{
             ticks: {
                 beginAtZero: true,
                 userCallback: function(label, index, labels) {
                     // when the floored value is the same as the value we have a whole number
                     if (Math.floor(label) === label) {
                         return label;
                     }

                 },
             }
         }],
     },
 }

Пример скрипта

70
ответ дан Quince 21 August 2018 в 10:21
поделиться

Другой вариант - использовать параметр fixedStepSize следующим образом:

options = {
    scales: {
        yAxes: [{
            ticks: {
                fixedStepSize: 1
            }
        }],
    },
};
12
ответ дан John Rix 21 August 2018 в 10:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: