Andrei1penguin1, нет, не всё равно. Ещё раз, почитайте, как работает нейросеть YOLO и что там на выходе. Кстати, а confidence вы не учитывате, например?
Из (1, 1, 900) не получится (70, 2). Произведения всех размерностей в обоих случаях должны быть одинаковыми. Можете добавить промежуточный Dense-слой, который преобразует размерность к нужной. Но если вы хотите получить на выходе абсолютные координаты, это вряд ли будет работать хорошо. Почитайте, например, как кодируются данные на выходе YOLO и что такое anchor boxes.
Andrei1penguin1, не бред. Данные надо приводить к размерности выходных - либо в самой нейросети, нибо в процессе интерпретации данных, полученных от нейросети. Так-то можете на выход выдавать хоть плоский массив - если при пост-обработке сделаете reshape. Ну и loss-функцию как-то считать надо - а на данных правильной формы это проще.
Andrei1penguin1, вам стоит изучить теорию свёрточных сетей. И понимать, что и почему вы делаете. Разумеется, на вход свёрточной сети нельзя подавать flattened изображения. У вас же написано input_shape=(1024, 1024, 3) - почему вы подаёте тензор другой размерности? Полная размерность у вас будет (batch_size, height, width, n_channels).
Иван Мельников, тогда переформулируй задачу понятным образом. Что есть "серия"? Она должна быть непрерывна для строк (т.е. подряд идущие строки) или непрерывна для номера (один и тот же номер и event, но строки могут перемежаться со строками от других номеров)?
Ivan Yakushenko, я просто имел в виду, что лучше не итерироваться по строкам датафрейма, а написать функцию модификации и применить её с помощью .map() или .apply().
def process(text):
match = re.match(r'^#(.+?)(?=#)', text)
if match:
return match.group()
return text
df.loc[:, 'cell_name'] = df.cell_name.apply(process)
# Или так
# df.loc[:, 'cell_name'] = df.cell_name.map(process)