Спасибо автору за прекрасные лекции. Хотелось бы также увидеть подробный разбор механизма внимания и трансформеров. Немного критики к данному уроку: - судя по всему сеть просто переобучилась accuracy достигает 1.0; - было бы неплохо добавить также тестовую выборку;
@86Blind3 жыл бұрын
Каждая тема, высший класс
@mr.dipperxaki Жыл бұрын
Здравствуйте, очень интересные уроки, спасибо за них. Хотелось бы еще увидеть от вас архитектуру Трансформера, очень интересно послушать ваше мнение
@konstantingoncharov50763 жыл бұрын
Интересно было бы увидеть применение реккурентных сетей в задачах идентификации объекта управления.
@Responsible_Show-off10 ай бұрын
Предупреждаю, синтаксис кераса 3.0.4 в слое Embedding более не поддерживает аргумент input_length, долго пытался понять и думал что у меня проблемы с интерпретатором, пока не узнал что input_shape=(x,) делает тоже самое но так то удобнее, и без него вы даже сеть скомпилировать не сможете
@upjumpful7 ай бұрын
Спасибо за лекцию. Подскажите что именно передается на вход второго рекуррентного слоя(помимо вектора состояния второго слоя) в stacked RNN: выход первого слоя или вектор состояния первого слоя? Насколько я понял судя по схеме many to many, показанной Вами на 8:00, во второй слой на вход идет именно выход первого слоя, хотя в учебниках указано что должен идти вектор состояния первого слоя.
@talkingbirb28084 ай бұрын
скажите, а что вы понимаете под вектором состояния первого слоя? Его веса?
@KlausUnreal5 ай бұрын
Можно использовать такие архитектуры? public static IModel CreateGibridSimpleModel() { // Параметры модели int seqLength = 4; // Длина последовательности ходов int numFeatures = 52; // Количество признаков (карт в колоде) int trumpFeatures = 5; // Количество признаков для козырной масти (предполагая 4 масти и отсутствие козыря) // Входные данные для последовательности ходов var seqInput = keras.Input(shape: new Shape(seqLength, numFeatures), name: "sequence_input"); // Входные данные для козырной масти var trumpInput = keras.Input(shape: new Shape(trumpFeatures), name: "trump_input"); // LSTM слой для обработки последовательности ходов var lstmOut = new LSTM(128).Apply(seqInput); // Слой для анализа козырной масти с активацией "relu" var trumpAnalysis = new Dense(32, activation: keras.activations.Relu).Apply(trumpInput); // Объединение выходов LSTM и анализа козырной масти var merged = keras.layers.Concatenate().Apply(new Tensors(lstmOut, trumpAnalysis)); // Дополнительные Dense слои с Dropout var x = new Dense(128, activation: "relu").Apply(merged); x = new Dropout(0.5f).Apply(x); var output = new Dense(numFeatures, activation: "softmax").Apply(x); // Создание модели var model = keras.Model(inputs: new Tensors(seqInput, trumpInput), outputs: output); // Компиляция модели var optimizer = keras.optimizers.Adam(learning_rate: 0.001f); model.compile(optimizer: optimizer, loss: keras.losses.CategoricalCrossentropy(), metrics: new string[] { "accuracy" }); model.summary(); return model; }
@MurzNN Жыл бұрын
Спасибо, отличное объяснение! Но в последнем примере не совсем понятно какие преимущества даёт второй рекуррентный слой для решения задачи, можете вкратце объяснить?
@meowxd1337 Жыл бұрын
А можно еще объяснить unet, segnet итд?
@VenatoresnamIgnotis3 жыл бұрын
Комментарий в поддержку канала) Кстати говоря, добавив этот слой к предыдущей программе я получил на выходе последовательность одинаковых слов. Т.е. каждые 3 слова следующие после исходных повторяются. Не означает ли это переобучение сети? Я попробовал добавить в начале Dropout слой перед слоем Dense, это не помогло. Добавление BatchNormalization перед Dense привело к повторению последовательности 6 слов, т.е вроде частично повлияло на решение проблема
@franzditr65124 жыл бұрын
Надо полагать, скоро доберемся до сетей с подкреплением)))
@selfedu_rus4 жыл бұрын
С подкреплением - это не сети, а метод обучения. Он может применяться и для сетей и использоваться без них с другими алгоритмами.
@franzditr65124 жыл бұрын
@@selfedu_rus понял, интересно посмотреть как за вознаграждение будет менятся поведение сети.
@dikitv95584 жыл бұрын
@@selfedu_rus Здравствуй. Спасибо за уроки! Будет ли обучение с подкреплением?)
@КоляВасильев-о5и3 жыл бұрын
Скажите пожалуйста про return_sequences=True. Если я правильно понял, то по умолчанию у рекуррентной ячейке выход осуществляется 1 раз и только после того как завершится рекурсия. Но когда мы пишем return_sequences=True, то выход формируется не только в конце, но и каждом временном шаге. Если первый рекуррентный слой принимает на вход векторное представление слов, и так слово за словом, то второй рекуррентный слой принимает последовательность выходов предыдущего слоя в каждый момент времени? То есть, если в первом случае на вход рекуррентного слоя подается слово за словом из исходной последовательности, то во второй рекуррентный слой подается последовательность выходов предыдущего рекуррентного слоя, выход за выходом? Я правильно понял суть или это работает как то иначе?
@selfedu_rus3 жыл бұрын
да именно так по мини-батчам (то есть порциями размером в мини-батчи)