Что формат принят Системой. Сеть. Почта. Синтаксический анализатор MailAddress?

Эти результаты говорят вам о том, что вы перегружены: ваша модель достигает идеального результата по точности обучения, а это значит, что модель, вероятно, просто запоминает то, что видит, без должного обобщения (следовательно, застревает с точностью проверки 70%).

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

BatchNormalization не является техникой регуляризации, поэтому «Dropout вместо BatchNorm» немного странно.

Еще одна вещь, которую вы можете попробовать, это трансферное обучение. Получить гораздо больший набор изображений; не имеет значения, являются ли они окнами и дверями или просто чем-то другим. Тренируйте свою сеть для этой задачи. Затем, как только это будет сделано, выбросьте последний слой, замените его новым только для ваших конкретных 3 классов и снова потренируйтесь, но только с весами ЭТОГО слоя. (Более подробную информацию и тонкости можно найти в литературе).

7
задан David Schmitt 9 February 2009 в 13:12
поделиться

2 ответа

Я имею, записал немного отрывка для тестирования функции:

foreach (int i in Enumerable.Range(32,128-32))
{
    char c = (char)i;
    string addr = String.Format("par.t1{0}pa.r{0}t2@example.com", c);
    try
    {
        var mailAddr = new MailAddress(addr);
    }
    catch
    {
        Console.WriteLine("MailAddress failed '{0}' ({1}): {2}", c, i, addr);
    }
}

Со следующими результатами на 3,5 SP1:

MailAddress failed ' ' (32): par.t1 pa.r t2@example.com
MailAddress failed '"' (34): par.t1"pa.r"t2@example.com
MailAddress failed '(' (40): par.t1(pa.r(t2@example.com
MailAddress failed ')' (41): par.t1)pa.r)t2@example.com
MailAddress failed ',' (44): par.t1,pa.r,t2@example.com
MailAddress failed ':' (58): par.t1:pa.r:t2@example.com
MailAddress failed ';' (59): par.t1;pa.r;t2@example.com
MailAddress failed '<' (60): par.t1<pa.r<t2@example.com
MailAddress failed '>' (62): par.t1>pa.r>t2@example.com
MailAddress failed '@' (64): par.t1@pa.r@t2@example.com
MailAddress failed '[' (91): par.t1[pa.r[t2@example.com
MailAddress failed '\' (92): par.t1\pa.r\t2@example.com
MailAddress failed ']' (93): par.t1]pa.r]t2@example.com
MailAddress failed '⌂' (127): par.t1⌂pa.r⌂t2@example.com

Также это, кажется, не поддерживает локальные части "заключенной в кавычки строки", как "blah"@example.com.

Я не думаю, что блок проверки допустимости мог принять любого меньше прежде, чем стать неприменимым.

4
ответ дан 7 December 2019 в 07:51
поделиться

В ветке обсуждения на Статья из электронной почты Доминика Сэйерса , Джерри О ' Брайен сказал, что он читал тесты Доминика на соответствие RFC на System.Net.MailAddress class:

System.Net.MailAddress только на 59% соответствует спецификациям RFC. В последующих комментариях отмечены конкретные случаи где он генерировал ложные срабатывания и ложноотрицания.

RFC крайне слабо подходят для определения действительного адреса электронной почты. Они позволяют использовать целый ряд необычных и непопулярных форматов. Итак, я предполагаю, что реальный вопрос заключается в том, достаточно ли System.Net.MailAddress в большинстве реальных ситуаций?

3
ответ дан 7 December 2019 в 07:51
поделиться
Другие вопросы по тегам:

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