Почему этот модульный тест перестал работать при тестировании равенства DateTime?

Боюсь, у вас есть проблема с данными.

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

  1. Создать LSTM, который оценивает предметы студента.

  2. Создайте сеть, которая сравнивает вас с другим учеником и сообщает вам, лучше это или хуже (через шаг 1). Он известен как сиамская сеть.

У вас есть то, что сказано LSTM сиамский.

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

РЕДАКТИРОВАТЬ :

Может быть полезна одна архитектура, похожая на эти.

enter image description here

Используйте LSTM для получения информации о любом предмете и соответствующей отметке.

Когда информация сгущена, я объединяю эту информацию и ученика в горячем виде.

Мы используем Dense или множественную плотность, чтобы получить отметку с сигмовидной активацией в последнем слое.

Мы используем функцию потерь, чтобы максимизировать ноту a относительно b, когда a лучше, чем b. И иначе.

y_i - ваша цель в 1 o -1. 1, если ученик а лучше ученика b, и -1, если ученик а хуже ученика b.

Я никогда не пробовал этот тип функции потери, поэтому я не могу сказать вам, работает она или нет. Он основан на потере, которую использует SVM: https://en.wikipedia.org/wiki/Support-vector_machine

Может быть, другой пользователь может помочь вам лучше.

8
задан flipdoubt 12 December 2008 в 20:32
поделиться

5 ответов

Даты не равны. TryParse отбрасывает некоторые галочки. Сравните Значения деления.

Для одного тестового прогона:

Console.WriteLine(date.DateValue.Value.Ticks);
Console.WriteLine(actual.Ticks);

Урожаи:

633646934930000000
633646934936763185
16
ответ дан 5 December 2019 в 08:26
поделиться

Проблемой не является действительно TryParse, но на самом деле ToString ().

Объект DateTime запускается с точности (если не точность) вниз к миллионной части секунд. ToString () convertsit в строку, с точностью только к секунде.

TryParse делает лучшее, он может с тем, что он дан.

Если Вы добавляете спецификатор формата (вроде "yyyy-MM-dd HH:mm:ss.ffffff"), это должно работать.

3
ответ дан 5 December 2019 в 08:26
поделиться

Для определения формата, который включает всю точность можно использовать Строку. Формат () метод. Пример, который дает James, был бы похож на это:

String.Format("{0:yyyy-MM-dd HH:mm:ss.ffffff}", ObjectValue);

Я не знаю то, что это сделает при передаче его что-то, что это не дата.

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

    public DateTime? DateValue
    {
        get
        {
            DateTime value = ObjectValue as DateTime;
            if (value != null) return value;
            return DateTime.TryParse(ObjectValue.ToString(), out value) ? value : new DateTime?();
        }
    }
1
ответ дан 5 December 2019 в 08:26
поделиться

public DateTime? DateValue
        {
            get
            {
                DateTime value;
                bool isDate = DateTime.TryParse(ObjectValue.ToString(), out value); 
                return isDate ? new DateTime?(value) : new DateTime?();
            }
        }

0
ответ дан 5 December 2019 в 08:26
поделиться

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

0
ответ дан 5 December 2019 в 08:26
поделиться
Другие вопросы по тегам:

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