Вопросы с тегами [conv-neural-network]

0

голосов
0

ответ
2

Просмотры

Есть ли нормализации изображений путем деления на 255 информации утечки между поездом и тестового набора?

Я видел деление на 255, которые использовались много раз, как в нормализации CNN учебники в Интернете, и это делается по всему набору данных, прежде чем тест поезда раскола. Я был под впечатлением, что тестовый набор должен быть нормализованы в соответствии со средним / станд / максиминными и т.д. обучающего набора. При использовании / 255 по всему набору данных, по-видимому, мы даем обучение установить чувство для тестового набора. Это правда? Что такое правильный подход здесь? Это: x_train = (x_train - x_train_mean) / x_train_std x_test = (x_test - x_test_mean) / x_test_std или это: x_train = (x_train - x_train_mean) / x_train_std x_test = (x_test - x_train_mean) / x_train_std или это: данные / 255 Спасибо I» ве было предложено предоставить предысторию, что я пробовал: Это, кажется, ungoogleable, я не нашел какого-либо обсуждения на нем.
SCool
1

голосов
0

ответ
640

Просмотры

Applying a specific High pass filter on a RGB image in numpy

Я пытаюсь preproccess моего изображения перед подачей его на CNN. Цель Чтобы извлечь остаточную после применения фильтра верхних частот (ссылка 1) на RGB изображении размеров 512x512 (в основном форма (512,512, 3)), используя следующее уравнение: ссылку на изображение, где есть образ и матрица фильтр верхних частот. Сначала я подумал о подходе к проблеме, используя подход, определенный в этом вопросе здесь. Но они использовали черно-белое изображение. Гипотеза: Отделить изображение в различных каналах, а затем применить фильтр к каналу перед объединением их снова. Как вы думаете, что это правильный путь решения проблемы или есть лучший подход? И как бы я идти об этом в Python? Справка: 1) Глубокое изучение для стегоанализа через сверточных нейронных сетей 2) Модель камеры идентификации с использованием Deep CNN»
Pradyumna Rahul
1

голосов
0

ответ
362

Просмотры

Сиамские сети Точность?

Я использую контрастную слой потери из этого документа: Я установил разницу до определенного значения. Но я не совсем уверен, как я бы вычислить точность для задачи классификации. Насколько я знаю, я бы рассчитать евклидово расстояние от особенностей и проверить на определенный порог. Был бы этот порог те же, что и маржа? Или это еще один параметр, который должен быть найден?
Luke
1

голосов
0

ответ
202

Просмотры

модель сохранения в файле keras JSon

Я видел два разных вида модели стиля экономии в Keras. model.save (os.path.join (model_path, имя файла)) и другой использует JSON и вес model_json = model1.to_json () с открытым ( "model1.json", "ш"), как json_file: json_file.write (model_json ) model1.save_weights ( «model1.h5») печать ( «Сохраненные модели на диск»), что является differens между этими двумя различными моделями?
james james
1

голосов
0

ответ
223

Просмотры

Caffe net.forward вызова для нескольких партий

Я использую тип ImageData данных в .prototxt файла и пытаюсь получить функции из кода Python с использованием net.forward () и net.blobs из библиотеки Caffe. Тем не менее, я получаю только 50 особенности после того, как net.forward вызова (), который является batch_size который я поставил в .prototxt файла. Как я могу получить возможности для последующих партий? Должен ли я называть net.forward () несколько раз?
PallaviJog
1

голосов
1

ответ
200

Просмотры

Conv1D не обновляет веса. (Все ноль) и тестирование выходов всегда же которое равно последний слой весов?

Я хотел бы использовать 1D CNN предсказать следующий день солнечную энергию. Разрешение данных серии времени один час, а длина один год. Я готовлю модель с данными 1-й день, чтобы предсказать день 2. xtrain = day1, ytrain = day2, XTEST = Day3 предсказать DAY4. 24 часа ввод данных -> CNN -> 24 часа выход я обучен данные в течение 10 дней (образцы); затем предсказал 4 дней, проблема заключается в том, что CNN всегда дает то же значение выходной независимо от входного сигнала. Затем я проверил веса, только веса выходного слоя равны нулю. Кроме того, выходное значение не изменяется с различным набором входных данных. Ссылка для данных: https://mega.nz/#!NpoTzIBJ!U5l8ToQgcJ6xif2tMjIrXuace3skhrtwLEdeoWe_FkM изображения матрицы весов: Графика предсказанных значений: Код:
Reiso
1

голосов
0

ответ
231

Просмотры

Преобразование RGB изображение для * выглядеть * Infrared

Контекст: Я пытаюсь улучшить модель оценки Позы так, что он работает лучше, когда моя камера находится в режиме инфракрасного. К сожалению, у меня только RGB изображения для обучения на. Я понимаю, что вы не можете преобразовать RGB непосредственно ИК, но моя гипотеза состоит в том, что преобразование RGB изображения выглядеть как IR, а затем обучение на наборе комбинированных RGB и ИК-изображений, приведет к более высокой производительности. Существует ли какая-либо библиотека, которые пытались реализовать такую ​​функцию? Я в основном ищу функцию, что-то вроде этого ( «ИК-эффекта») - http://funny.pho.to/infrared/
megashigger
1

голосов
1

ответ
233

Просмотры

Как визуализировать нашу сеть в Matconvnet?

Есть ли функция для визуализации сети, как это? Я хочу, чтобы визуализировать как dagnn и simplenn архитектуры.
1

голосов
1

ответ
58

Просмотры

Последний convoulutional слой в U-чистой архитектуре; ожидает неправильную размерность корня

годный (X_train, y_train, batch_size = 36, nb_epoch = 5) Я не понимаю, почему выход второго последнего слоя (conv9) отличается от математического ожидания последнего слоя (conv10). Модель Keras является любезно https://github.com/jocicmarko/ultrasound-nerve-segmentation/blob/master/train.py. Обновлено: Добавлена ​​полная model.summary ().
ali_takin
5

голосов
1

ответ
96

Просмотры

Как один динамически добавлять новые параметры для оптимизаторов в Pytorch?

Я шел через этот пост в pytorch форуме, и я также хотел бы сделать это. Исходное сообщение удаляет и добавляет слои, но я думаю, что моя ситуация не отличается. Я также хочу, чтобы добавить слои или несколько фильтров или слова вложения. Моя главная мотивация в том, что агент AI не знает весь словарный запас / словарь заранее, потому что его большой. Я сильно предпочитаю (на данный момент), чтобы не делать посимвольно RNNs. Так, что будет для меня, когда агент начинает вперед передать его может найти новые слова, которые он никогда не видел, и нужно будет добавить их в таблицу вложения (или, возможно, добавить новые фильтры, прежде чем он начнет прямой проход). Так что я хочу, чтобы убедиться, что это: вложения добавляются правильно (в нужное время, когда новый расчет граф сделал), так что они не являются обновляемыми оптимизатором никаких проблем с хранимой информацией прошлых параметрами е. г. если его использование какой-то импульс Как это сделать один? Любой образец кода, который работает?
Charlie Parker
1

голосов
0

ответ
35

Просмотры

Как получить входное слово как выходное слово в нейронной сети

Я пытаюсь получить входное слово как выходное слово с LSTM (скопировать слово). Для этого, я видел некоторые фрагменты. В этих примерах, я заметил, что нам нужно преобразовать символы слова в целые числа. Но эти примеры были написаны, чтобы предсказать следующие символы. пример того, что я пытаюсь input_word = «алгебра» передать input_word через некоторую сеть output_word = «алгебры» Это ссылка я пытался (https://machinelearningmastery.com/develop-character-based-neural-language-model -keras /). Любые идеи или ссылки о проблеме полезно.
prasanna
1

голосов
1

ответ
394

Просмотры

Программа GPU не удалось выполнить: cublas ошибки во время выполнения

Я пытаюсь обучить сеть на включенном CUDA GeForce GTX 1070 GPU с помощью pytorch. Я не понимаю ошибки, ни я нашел любую подобную проблему в любом месте. Я не знаю, если вопрос своего Cuda или что-то в моем коде. Traceback (самый последний вызов последнего): Файл "main.py", строка 497, в основной () Файл "main.py", строка 167, в главном поезде (train_loader, модель, критерий, оптимизатор, эпоха, нормализатор) Файл " main.py», строка 244, на выходе поезда = модель (* input_var) Файл "C: \ ProgramData \ Anaconda3 \ Lib \ сайт-пакеты \ факелом \ пп \ модули \ module.py", строка 357, в __call__ результат = self.forward (* вход ** kwargs) Файл "C: \ Users \ 1546544 \ Desktop \ ML \ model.py", строка 147, в прямом atom_fea = conv_func (atom_fea, nbr_fea, nbr_fea_idx) Файл «C:
Nikhil Panse
1

голосов
2

ответ
235

Просмотры

Keras - проходя различные параметры для различных точек данных на лямбда-слой

Я работаю над моделью CNN в Keras фоне / TF. В конце окончательного сверточного слоя, мне нужно объединить выходные карты из фильтров. Вместо того чтобы использовать GlobalAveragePooling или любого другого рода объединения, я должен был объединить в соответствии с временными рамками, которые существуют по ширине выходной карте. Таким образом, если выход образца из одного фильтра допустят NXM, н будучи временные рамки и т выходы вдоль особенностей. Здесь я просто нужно объединить вывод кадров n1 п2, где n1 и n2
Kiritee Gak
1

голосов
0

ответ
71

Просмотры

Keras Cnn Transfer Модель: Снизить Окончательная модель размера?

Я работаю с несколько CN должны работать на мобильных устройствах. Если я создаю этот CNNs с нулем (черный п белого, 256х256), я способен производить бинарную классификацию модель около 10 МБ, который является размером, который будет отлично работать на модель устройстве. Однако, используя обучение передачи, такие как VG16 Imagenet дает свою более высокую точность классификации. Но, размер модели ближе 100mb! То есть в 10 раз больше, чем от нуля. Я должен взять эти черно-белые изображения с нуля и конвертировать их в 3 канал, на долю которого приходится часть размера. Кроме того, замораживание меньше слоев, как 10 вместо 14 уменьшает размер, но очень незначительно. Любое предложение по пути я все еще могу эффективно использовать обучение передачи Keras и производить гораздо меньшую модель (например, таким образом, там модель обучения передачи, который является B & W)? Вот мой трансфер базовой модели:
jKraut
1

голосов
1

ответ
199

Просмотры

Keras - Error in stack Conv1D with Bidirectional LSTM

Найдено: 'ул (слой) +), 131 self.built = False 132, если не self._layers: Ошибка типа: Добавленный слой должен быть экземпляром класса слоя. Найдено: Что я сделал не так? Спасибо!
Wendy Zhang
1

голосов
0

ответ
57

Просмотры

Tensorflow только один GPU одновременно активен в MULTI подготовки GPU

Я пытаюсь подготовить модель CNN с использованием механизма параллелизма данных. Я вывешивать фрагмент кода метода поезда для простоты, четкости train_model (file_loc = '', data_details = '', эпохами = '', контрольно-пропускной пункт = '', learning_rate = 1e-5): train_initializer = data_details [ 'train_it_init'] test_initializer = data_details [ ''] test_it_init итератора = data_details [ 'итератора'] batch_list = [iterator.get_next () для _ в диапазоне (NUM_GPUS)] с tf.device ( '/ CPU: 0'): num_class = 14 = tower_grads [] tower_losses = [] = выбрать tf.train.AdamOptimizer (learning_rate) dropout_rate = tf.placeholder (tf.float32) для г в диапазоне (NUM_GPUS): с tf.variable_scope (tf.get_variable_scope ()): с tf.device ( '/gpu:{}'.format(i)), тс. name_scope ( 'башни _ {}' формат (я).) как сфера: xbatch, ybatch = batch_list [I] total_loss = tower_loss (сфера, xbatch, ybatch, dropout_rate = dropout_rate) tower_grads.append (opt.compute_gradients (total_loss)) avg_grads = average_gradients (tower_grads) train_op = opt.apply_gradients (avg_grads) Я пытаюсь использовать 4 GPU (NUM_GPUS), но проблема заключается в том, что только 1 активный графический процессор одновременно. Кажется, каждый GPU делает свою работу, но в последовательном вопросе. Я не могу понять, почему он ведет себя, как таким образом. Я использую набор данных API и итератор и итератор инициализатору в словаре data_details (проверено, работает) и модель умозаключение называется внутри tower_loss (..) вызов метода по конкретной переменной и область видимости имени. Любое предложение было бы очень полезно.
amin__
1

голосов
1

ответ
37

Просмотры

R тепловизор isoblur: как он вычисляет boundries? Можно построить нейронную сеть, основанную на своей формуле?

Я пытаюсь сделать что-то вроде слова Зрительного в R с помощью образов. На данный момент, я был в состоянии поставить некоторые boundries вокруг слов с тепловизора пакета и isoblur функция: документ = тепловизора :: load.image ( «image.jpg») участок (документ) документ1 = document.3) выделить (рх ) Документ Document1 Результат идея из этой работы: https://cran.r-project.org/web/packages/imager/vignettes/pixsets.html Isoblur описания не является очень полезным для понимания процесса за функциями и я интересно: Какие расчеты за ним? Можно построить нейронную сеть для того чтобы достигнуть того же результата, более или менее?
Marc Coca Moreno
1

голосов
1

ответ
63

Просмотры

Программное обеспечение OCR или самодельный CNN для обработки документов?

У меня дилемма. Если у вас есть только один тип счета / документа, и у вас есть определенное поле, которое вы хотите обработать с этого счета и использовать где-то еще (что подал случается рукописная цифра, иногда пишется с тире или косой черты), вы бы использовать некоторые программы распознавания текста или создать свой собственный CNN для распознавания цифр? Что точности можно ожидать от ОРЗ? Будет ли ваш CNN быть более точным, так как вы просто заинтересованы в определенном типе цифр письменной форме с указанием конкретных размеров изображения и т.д. Что бы лучше в данной ситуации? Имейте в виду, что вы бы не использовать его любым другим способом, или любое другое место для рукописных цифр признания, и вы уже до 100k и больше документов, которые копируются на компьютер человеком, и вы можете использовать его для обучение и тестирование. Спасибо.
Igor
1

голосов
0

ответ
31

Просмотры

Выполнить 1-D ко использование tensorflow

Я новичок в TensorFlow. Я хочу тренировать модель усл 1-D. Я один-греб CSV-файлы для каждой строки из моих исходных данных. CSV файлы выглядеть следующим образом csv_file1: 1,1, 1,3, 1,5, 1,5, 1 csv_file2: 2,1, 2,3, 2,7, 2,9, 0 В последнем столбце (содержащие 1 & 0) являются этикетками для файлов CSV однорядных, перейдя по ссылке I написал следующие фрагменты кода. Я преобразовал файлы CSV для TFRecord, используя следующий код с tf.python_io.TFRecordWriter (имя файла), как писатель: особенности, метка = df_values ​​[:, 1: -1], df_values ​​[:, -1:] Пример = tf.train .example () example.features.feature [ "функции"]. float_list.value.extend (функции [0]) example.features.feature [ "метка"]. int64_list.value.append (метка [0]) писатель. написать (пример. SerializeToString ()) Я хочу, чтобы теперь прочитать файлы и это код, я использую. Защиту _parse_function (data_record): особенности = { 'метка': tf.FixedLenSequenceFeature ([], tf.int64, allow_missing = True), 'особенности': tf.FixedLenSequenceFeature ([], tf.float32, allow_missing = True),} образец = tf.parse_single_example (data_record, особенности) возвращение образца [ 'функции'], образец [ 'ярлык'] = имена файлов glob.glob ( "*. tfrecords") набора данных = tf.data.TFRecordDataset (имена файлов) набор данных = набора данных. карта (_parse_function) набор данных = dataset.shuffle (buffer_size = 10000) Набор данных = dataset.batch (batch_len) # Создать один выстрел итератора итератора = dataset.make_one_shot_iterator () X, у = iterator.get_next () Отсюда проблема начинается , Из документации, я понимаю, что сессия делает, но не поставила его в код. Предполагая, что позже я выясню, как использовать tf.seesion.run () я написал следующий код, но не знают, как на самом деле включить его в мой основной сценарий и далее использовать его, чтобы обучить мою модель. x_train_batch, y_train_batch = tf.train.shuffle_batch (тензоры = [X_train, y_train], batch_size = batch_size, емкость = емкость, min_after_dequeue = min_after_dequeue, enqueue_many = True, NUM_THREADS = 8) x_train_batch = tf.cast (x_train_batch, tf.float32) x_train_batch = tf.reshape (x_train_batch, форма = (batch_size, 1,65281)) y_train_batch = tf.cast (y_train_batch, tf.int64) y_train_batch = tf.one_hot (y_train_batch, num_classes) Любая помощь относительно того, как действовать дальше будет помогать. PS: Если предположить, мои данные были загружены в np.array размер будет, (6571, 65281). С тех пор'
Atharva Gomekar
1

голосов
0

ответ
2.9k

Просмотры

Ошибка: (-215: утверждение не удалось) ssize.empty () в функции 'резюме :: изменить размер'

Этот код для КЛАССИФИЦИРУЙТЕ 5 различных классов изображений. Я пытался использовать ImageDataGenerator () для увеличения изображения, но когда я запускаю этот код, я havinh этой ошибки «ошибка: (-215: Утверждение не удалось)! Ssize.empty () в функции„резюме :: изменение размера“». Как я могу исправить эту ошибку? Кроме того, я буду признателен, если кто-то может сделать другие подходящие изменения в коде. импорт CV2 импорт NumPy в н.п. импорта из зева случайного импорта перетасовки от импорта tqdm tqdm tensorflow импорт # с keras tensorflow.contrib импорт # с облегченной из keras.preprocessing.image импорта ImageDataGenerator из keras.models импорта Последовательная TRAIN_DIR = «поезд» VALID_DIR = ' проверить»TEST_DIR =„тест“
Lakwin C
1

голосов
1

ответ
176

Просмотры

Какие значения по умолчанию размера ядра и дополнения в pytorch?

Для примера, возьмите этот кусок кода: ко = conv2d (in_channels = 3, out_channels = 64) Что я могу ожидать, что заполнение и размер ядра, чтобы по умолчанию?
1

голосов
1

ответ
76

Просмотры

How to fix specific weight at embedding layer

Я хочу осуществить Cnn приговор классификации и отступы 0 для длины вариации фраз. Но это не reasonalble для этой задачи, потому что 0 будет рассматриваться как словарь. Чтобы решить эту проблему, я хочу, чтобы установить вес все ноль для 0 отображения на слово-вектор в встраивании слоя, и других лексического все еще может быть обучена. Справочный документ: https://arxiv.org/abs/1408.5882 Ниже мой текущий код: w2v_weight = np.array (список (данные [ 'id_vec'] значение ()).) # Добавить нули в первом тусклом: ноль = н.п. .zeros ((1, w2v_weight.shape [1])) w2v_weight = np.concatenate ((ноль, w2v_weight), ось = 0) embedding_layer = Вложение (Len (данные [ "word_id"]) + 1, 300, вес = [w2v_weight], input_length = данные [ 'x_test']. форма [1], обучаемый = True) embedding_layer2 = Встраивание (LEN (данные [ "word_id"]) + 1, 300, вес = [w2v_weight],
陳柏龍
1

голосов
1

ответ
66

Просмотры

Проблема с retrain.py. Получение tensorflow.python.framework.errors_impl.NotFoundError ошибки

Я использую retrain.py переквалифицироваться детектор объекта на фотографии моей стороны (чтобы обнаружить, сколько пальцев я держу). На сайте Tensorflow, я последовал за учебник, где я его на переподготовку своих изображений цветов. Так что я написал питон retrain.py --image_dir ~ / flower_photos, и она работала. У меня был мой каталог hand_photos, который содержал подкаталоги из меня держит различные пальцы вверх. Однако я получил эту ошибку: tensorflow.python.framework.errors_impl.NotFoundError: / Users / spencerkraisler / hand_photos / без названия папки; Нет такой файл или каталог, я не понимаю, почему он ищет какую-то безымянную папку в моем hand_photosdirectory, и почему это работает найти на flower_photos. Я использую тока тензорных и питон 3.6. Я нахожусь в среде анаконды, однако это работает очень хорошо с flower_photos. Более того, flower_photos содержит только подкаталоги фотографий различных цветов, все .jpg. Мои фотографии также в формате .jpg.
Spencer Kraisler
1

голосов
1

ответ
55

Просмотры

Странное поведение функции потерь при обучении CNN

Я пытаюсь тренировать свою сеть на MNIST, используя самодельный CNN (C ++). Это дает достаточно хорошие результаты, когда я использую простую модель, как: извилины (2 полнометражных карты, 5x5) (Тань) -> MaxPool (2х2) -> Flatten -> Полностью Connected (64) (Тань) -> Полностью Connected (10) (сигмовидной). После 4-х эпох, он ведет себя так, как здесь 1. После 16 эпох, она дает ~ 6,5% ошибка на тестовом наборе данных. Но в случае 4-художественных карт в Conv, значение СКО не улучшается, иногда даже увеличивается в 2,5 раза 2. Режим онлайн-обучения используется, с помощью Адама оптимизатора (альфа: 0,01, beta_1: 0,9, бета_2 : 0,999, эпсилон: 1.0e-8). Он рассчитывается как: двойной AdamOptimizer :: известково (Int т, двойной & M_T, двойной & v_t, дважды G_T) {M_T = этом-> beta_1 * M_T + (1,0 - этом-> beta_1) * g_t; v_t = this-> бета_2 * v_t + (1,0 - this-> бета_2) * (* g_t g_t); двойная m_t_aver = M_T / (1,0 - станд :: пау (этом-> beta_1, т + 1)); двойная v_t_aver = v_t / (1,0 - станд :: пау (этом-> бета_2, т + 1)); вернуться - (this-> альфа * m_t_aver) / (станд :: SQRT (v_t_aver) + this-> эпсилон); } Таким образом, может быть эта проблема вызвана отсутствием некоторых дополнительных методов обучения (отсев, пакетной нормализации), или неправильно установленными параметрами? Или это вызвано некоторые проблемы реализации? PS Я обеспечиваю ссылку GitHub, если это необходимо. или неправильно установить параметры? Или это вызвано некоторые проблемы реализации? PS Я обеспечиваю ссылку GitHub, если это необходимо. или неправильно установить параметры? Или это вызвано некоторые проблемы реализации? PS Я обеспечиваю ссылку GitHub, если это необходимо.
mrhemen2015
1

голосов
1

ответ
36

Просмотры

Как подметать нейронную сеть через образ с tensorflow?

Мой вопрос о поиске эффективного (в основном в перспективе параметров рассчитывать) способ реализации скользящего окна в tensorflow (1.4) для того, чтобы применить нейронную сеть через изображения и получение 2-D карты с каждым пикселем (или регионом) представляющий выход сети для соответствующего рецепторного поля (которое в данном случае является сам скользящим окном). На практике, я пытаюсь реализовать либо MTANN или PatchGAN с помощью tensorflow, но я не могу понять, реализацию я нашел. Эти две архитектуры могут быть кратко описана следующим образом: MTANN: Линейная нейронную сеть с входным размером [1, N, N, 1] и выходной размер [] применяется к изображению размером [1, М, М, 1] производить карту размера [1, G, G, 1], в котором каждый пиксель сгенерированной карты соответствует вероятности соответствующего NxN патча принадлежать к определенному классу. PatchGAN Дискриминатор: Более общая архитектура, как я могу понять сеть, которая strided через образ выводит саму карту, а не одно значение, которое затем объединяется с соседними картами для получения конечной карты. В то время как я не могу найти любую реализацию tensorflow из MTANN, я нашел реализацию PatchGAN, который рассматривается в качестве сверточной сети, но я не мог понять, как это реализовать на практике. Скажем, у меня есть заранее обучен сеть из которых я получил тензор выходной. Я понимаю, что свертка путь, поскольку сверточный слой работает над локальной областью входа и что я пытаюсь сделать, можно четко представить в виде сверточной сети. Однако, что если у меня уже есть сеть, которая генерирует суб-карту из данного окна фиксированного размера? Например Я получил тензор sub_map = сеть (input_patch), которая возвращает [1,2,2,1] карты из [1,8,8,3] изображения (соответствующий 3-слойного СКЛС в с размером входного 8, размером фильтра 3x3). Как я могу смести эту сеть на [1,64,64,3] изображения, для того, чтобы произвести [1,64,64,1] карту, состоящую из каждого пространственного вклада, как это происходит в свертке? Я рассмотрел эти решения: Использование tf.image.extract_image_patches, которые явно извлекать все заплаты изображения и каналы в измерении глубины, но я думаю, что это будет потреблять слишком много ресурсов, так как я переключение на PatchGAN дискриминатор от полных сверточных сетей из-за ограничения памяти - также состав итоговой карты не так просто. Добавление сверточного слоя до сети меня, но я не могу понять, что фильтр (и его размер) должен быть в этом случае для того, чтобы сохранить pretrained модель работать на 8x8 изображения при его интеграции в модели, которая работает на больших изображениях. За то, что я могу получить это должно быть что-то вроде whole_map = tf.nn.convolution (вход = x64_images, фильтр = sub_map, ...), но я не думаю, что это будет работать как фильтр является оператором, который зависит от воспринимающего само поле. Конечная цель состоит в том, чтобы применить эту небольшую сеть для больших изображений (например, 1024х1024) эффективным способом, так как моя текущая модель downscales прогрессивно изображения и не помещается в памяти из-за огромное количество параметров. Может кто-нибудь помочь мне, чтобы получить лучшее понимание того, что мне не хватает? Спасибо За то, что я могу получить это должно быть что-то вроде whole_map = tf.nn.convolution (вход = x64_images, фильтр = sub_map, ...), но я не думаю, что это будет работать как фильтр является оператором, который зависит от воспринимающего само поле. Конечная цель состоит в том, чтобы применить эту небольшую сеть для больших изображений (например, 1024х1024) эффективным способом, так как моя текущая модель downscales прогрессивно изображения и не помещается в памяти из-за огромное количество параметров. Может кто-нибудь помочь мне, чтобы получить лучшее понимание того, что мне не хватает? Спасибо За то, что я могу получить это должно быть что-то вроде whole_map = tf.nn.convolution (вход = x64_images, фильтр = sub_map, ...), но я не думаю, что это будет работать как фильтр является оператором, который зависит от воспринимающего само поле. Конечная цель состоит в том, чтобы применить эту небольшую сеть для больших изображений (например, 1024х1024) эффективным способом, так как моя текущая модель downscales прогрессивно изображения и не помещается в памяти из-за огромное количество параметров. Может кто-нибудь помочь мне, чтобы получить лучшее понимание того, что мне не хватает? Спасибо так как моя текущая модель downscales постепенно изображений и не помещается в памяти из-за огромное количество параметров. Может кто-нибудь помочь мне, чтобы получить лучшее понимание того, что мне не хватает? Спасибо так как моя текущая модель downscales постепенно изображений и не помещается в памяти из-за огромное количество параметров. Может кто-нибудь помочь мне, чтобы получить лучшее понимание того, что мне не хватает? Спасибо
EdoardoG
1

голосов
1

ответ
41

Просмотры

Можно ли позволить нейронной сети классификации объектов на основе секретных документов? [закрыто]

Я потащился набором данных текстов с независимыми категориями. При запуске классификатор CNN в Keras, я получаю точность> 90%. Мои тексты отзывы покупателей «Мне очень понравилась камера этого телефона.» Классы, например, «камерофон», «память» и т.д. То, что я ищу: можно ли пометить предложения с категориями, которые появляются в них в то время как классификатор помечает объекты, которые указывают на класс. Или более конкретно: Как я могу извлечь те части входного предложения, которые сделали сеть CNN в Keras выбирают (т.е. классификации) для 1, 2 или более категорий?
junkmaster
1

голосов
1

ответ
227

Просмотры

Как наносить маскирующий слой последовательна CNN модель в Keras?

У меня есть проблема нанесения маскирующего слоя в модели CNNs РНН / LSTM. Мои данные не исходное изображение, но преобразуется в форму (16, 34, 4) (channels_first). Данные последовательно, а самая длинная длина шага 22. Таким образом, для инвариантного образа, я установил, как 22. временного шаг Так как это может быть короче, чем 22 шагов, я заполнить другие с np.zeros. Однако, для 0 данных заполнения, это около половины среди всех набора данных, так и с 0 отступов, обучение не может достичь очень хорошего результата с так много бесполезных данных. Тогда я хочу, чтобы добавить маску, чтобы отменить эти 0 дополнительные данные. Вот мой код. маска = np.zeros ((16,34,4), DTYPE = np.int8) input_shape = (22, 16, 34, 4) модель = Последовательное () model.add (TimeDistributed (Маскирование (mask_value = маска), input_shape = input_shape, имя = 'маска')) model.add (TimeDistributed (Conv2D (100, (5, 2), data_format = 'channels_first' (добавить Dropout (0.4, имя = 'drop_gru')) model.add (Dense (35, активация = 'SoftMax', имя = ') SoftMax') model.compile (оптимизатор = 'Адам', потеря = 'categorical_crossentropy', метрики = [ «АСС»]) Вот примерная структура. model.summary (): _________________________________________________________________ слой (тип) Выходная форма Param # =================================== ============================== маска (TimeDist (None, 22, 16, 34, 4) 0 _________________________________________________________________ CONV1 (TimeDistributed) (Не, 22, 100, 30, 3) 16100 _________________________________________________________________ BN1 (TimeDistributed) (None, 22, 100, 30, 12 _________________________________________________________________ Для mask_value, я попытался с 0 или этой маски структуры, но ни работы, и он до сих пор поезда через все данные с половиной 0 отступов в нем. Может кто-нибудь мне помочь? Кстати, я использовал TimeDistributed здесь, чтобы соединить РНН, и я знаю, что еще один называется ConvLSTM2D. Кто-нибудь знает разницу? ConvLSTM2D занимает гораздо больше Params для модели, и получить обучение гораздо медленнее, чем TimeDistributed ... Кто-нибудь знает разницу? ConvLSTM2D занимает гораздо больше Params для модели, и получить обучение гораздо медленнее, чем TimeDistributed ... Кто-нибудь знает разницу? ConvLSTM2D занимает гораздо больше Params для модели, и получить обучение гораздо медленнее, чем TimeDistributed ...
Gao
1

голосов
0

ответ
814

Просмотры

Как я могу решить ошибки «распределение превышает 10 системной памяти» на keras?

Я сделал CNN на Keras с Tensorflow бэкэндом, моя подготовка набора 144 примеров, но каждый пример имеет размер 3200 * 101. Мой CNN является очень простым, только для обучения, batch_size 2 (я пытался сведя его с 32, но ничего не улучшается). Один слой CNN, один Flatten слой и один плотный слой для вывода (11 классов). Когда я подобрать модель, ноутбук показывает мили «Распределение (большого числа) превышает 10 системной памяти», а затем заморозить его, даже без запуска 1 эпохи. Я не могу «сжать» примеры, каждый из них должен иметь тот размер точно. Я бегу модель на CPU (я не имею GPU), 8 Гб оперативной памяти, 1 Тб диска. Что я могу сделать? Psdt: Извините за любой плохой английский, я все еще учусь. И спасибо за любой ответ! Update-редактирование: Просто добавить больше информации. Мой набор поезд из формы (144, 3400, 101, 1) для примеров и меток формы (144,
1

голосов
0

ответ
31

Просмотры

Why is training of Convolutions Networks much slower than fully connected Networks

Это сверточная нейронные сети I've сборка: сверточная нейронные сети архитектура и here'sa регулярный ANN только с плотными слоями сравнения: число параметров вполне сопоставимо. Оба были использованы для классификации рукописных цифр из MNIST набора данных (60.000 массивов 28х28). Независимо обозначает мою вычислительную мощность обучение на CNN является waayyyyy медленнее. ANN 250 Эпохи на 60.000 изображений: 0:05 ч CNN в течение 20 Эпохи на 30.000 изображений: 12:00 ч Таким образом, вопрос, почему? Мой Guess из-за совместное использование параметра CNNs, количество параметров может быть похоже, но параметр свертки слоя используется несколько раз: 3x3 ядра на 28х28 изображении -> каждый параметр используется приблизительно 784 раз (то же отступы), используя 32 ядра, что дает выход 28x28x32 (после объединения 14x14x32). Таким образом, ядро ​​для следующего сверточного слоя 3x3x32, поэтому здесь каждый параметр будет использоваться прибл 6,272 раз. Может кто-то с большим пониманием этого всего процесса обучения согласны или не согласны со мной? Или у вас есть какие-либо другие идеи по этой теме?
Quastiat
1

голосов
0

ответ
18

Просмотры

Какой смысл каждой части этой команды luminoth?

Я пытаюсь тренироваться на наборе данных с использованием светимости. Однако, как мой компьютер имеет плохой GPU я планирую использовать glcoud. Кажется, что luminoth имеет gcloud интеграции в соответствии с доком (https://media.readthedocs.org/pdf/luminoth/latest/luminoth.pdf). Вот что я сделал. Создание проекта Google Cloud. Установить Google Cloud SDK на вашем компьютере. gcloud авторизация Логин Включить следующие интерфейсы: • Compute Engine • Облачные Machine Learning Engine • Google Cloud Storage Я сделал это через webconsole. Теперь здесь, где я застрял. 5. Загрузить TFRecord файлы набора данных на ведро Cloud Storage: команда для этого есть; GSUtil -o GSUtil: parallel_composite_upload_threshold = 150M ф -r / путь / к / набора данных / ˓ → tfrecords Gs: // your_bucket / путь У меня есть файл tfrecords в моем локальном диске и данные, которые мне нужно тренироваться дальше. Тем не мение, Я не уверен, что каждая команда в GSUtil пытается сказать. Для / путь / к / набора данных / я просто ввести каталог мои данные в? И я загрузил файлы в ведро. Должен ли я просто указать путь к нему? Кроме того, я в настоящее время получаю не имеет разрешения на доступ к проекту (или не может существовать) Извиняюсь, если это может быть глупый вопрос.
Duke Glacia
1

голосов
1

ответ
31

Просмотры

No variation in accuracy and loss for the CNN?

I tried to classify images of 45 classes of 700 images each and perform simple CNN classification with two layers: of batch size: 252, epoch: 30, learning rate: 0.0001, Image size: 256 by 256 by3. I tried to increase as well as decrease the learning rate. Also the data set was split in the ratio 08:0.1:0.1 for training:testing:validation. However the accuracy and loss remains unchanged the loss is always zero. This is the architecture: #The FLAGS are used to assign constant values to several paths as well as variables that will be constantly used. flags = tf.app.flags flags.DEFINE_string('dataset_dir','//media//datapart//akshara//NWPU-RESISC45//NWPU-RESISC45//','//media//datapart//akshara//NWPU-RESISC45//NWPU-RESISC45//') flags.DEFINE_float('validation_size', 0.1, 'Float: The proportion of examples in the dataset to be used for validation') flags.DEFINE_float('test_size', 0.1, 'Float: The proportion of examples in the dataset to be used for test') flags.DEFINE_integer('num_shards', 1, 'Int: Number of shards to split the TFRecord files into') flags.DEFINE_integer('random_seed', 0, 'Int: Random seed to use for repeatability.') flags.DEFINE_string('tfrecord_filename', None, 'String: The output filename to name your TFRecord file') tf.app.flags.DEFINE_integer('target_image_height', 256, 'train input image height') tf.app.flags.DEFINE_integer('target_image_width', 256, 'train input image width') tf.app.flags.DEFINE_integer('batch_size', 252, 'batch size of training.') tf.app.flags.DEFINE_integer('num_epochs', 30, 'epochs of training.') tf.app.flags.DEFINE_float('learning_rate', 0.0001, 'learning rate of training.') FLAGS = flags.FLAGS img_size = 256 num_channels=3 num_classes=45 ######################################################################################################################## ######################################################################################################################## datapath_train = '//media//datapart//akshara//NWPU-RESISC45//NWPU-RESISC45//train//None_train_00000-of-00001.tfrecord' datapath_validation = '//media//datapart//akshara//NWPU-RESISC45//NWPU-RESISC45//validation//None_validation_00000-of-00001.tfrecord' datapath_test = '//media//datapart//akshara//NWPU-RESISC45//NWPU-RESISC45//test//None_test_00000-of-00001.tfrecord' def _extract_fn(tfrecord): features={ 'image/encoded': tf.FixedLenFeature([], tf.string), 'image/format': tf.FixedLenFeature([], tf.string), 'image/class/label': tf.FixedLenFeature([], tf.int64), 'image/height': tf.FixedLenFeature([], tf.int64), 'image/width': tf.FixedLenFeature([], tf.int64), 'image/channels': tf.FixedLenFeature([],tf.int64) } parsed_example = tf.parse_single_example(tfrecord, features) image_de = tf.io.decode_raw(parsed_example['image/encoded'],tf.uint8) img_height = tf.cast(parsed_example['image/height'],tf.int32) img_width = tf.cast(parsed_example['image/width'],tf.int32) img_channel = tf.cast(parsed_example['image/channels'],tf.int32) img_shape = tf.stack([img_height,img_width,img_channel]) label = tf.cast(parsed_example['image/class/label'],tf.int64) image = tf.reshape(image_de,img_shape) #label = parsed_example['image/class/label'] return image, img_shape, label ######################################################################################################################## ######################################################################################################################### """ # Pipeline of dataset and iterator dataset = tf.data.TFRecordDataset(datapath) # Parse the record into tensors. dataset = dataset.map(_extract_fn) # Generate batches dataset = dataset.batch(1) # Create a one-shot iterator iterator = dataset.make_one_shot_iterator() image, img_shape, label = iterator.get_next() with tf.Session() as sess: try: print(sess.run(img_shape)) image_batch=sess.run(image) print(image_batch) img_bas=tf.cast(image_batch,tf.uint8) plt.imshow(image_batch[0,:,:,:]*255) plt.show() except tf.errors.OutOfRangeError: pass""" ######################################################################################################################## ######################################################################################################################## #INITIALIZATION FOR THE CNN ARCHITECTURE #Layer 1 filter_size_conv1 = [5,5] num_filters_conv1 = 32 filter_shape_pool1 = [2,2] #Layer 2 filter_size_conv2 = [3,3] num_filters_conv2 = 64 filter_shape_pool2 = [2,2] #Placeholders x = tf.placeholder(tf.float32, shape = [None, img_size,img_size,num_channels], name='x') y = tf.placeholder(tf.int32, shape= [None], name = 'ytrue') #Output data placeholder y_one_hot = tf.one_hot(y,45) y_true_cls = tf.argmax(y_one_hot, dimension=1) ######################################################################################################################## ######################################################################################################################## def new_conv_layer(input, num_input_channels, filter_size, num_filters, name): with tf.variable_scope(name) as scope: # Shape of the filter-weights for the convolution shape = [filter_size, filter_size, num_input_channels, num_filters] # Create new weights (filters) with the given shape weights = tf.Variable(tf.truncated_normal(shape, stddev=0.05)) # Create new biases, one for each filter biases = tf.Variable(tf.constant(0.05, shape=[num_filters])) # TensorFlow operation for convolution layer = tf.nn.conv2d(input=input, filter=weights, strides=[1, 1, 1, 1], padding='SAME') # Add the biases to the results of the convolution. layer += biases return layer, weights def new_pool_layer(input, name): with tf.variable_scope(name) as scope: # TensorFlow operation for convolution layer = tf.nn.max_pool(value=input, ksize=[1, 2, 2, 1], strides=[1, 2, 2, 1], padding='SAME') return layer def new_relu_layer(input, name): with tf.variable_scope(name) as scope: # TensorFlow operation for convolution layer = tf.nn.relu(input) return layer def new_fc_layer(input, num_inputs, num_outputs, name): with tf.variable_scope(name) as scope: # Create new weights and biases. weights = tf.Variable(tf.truncated_normal([num_inputs, num_outputs], stddev=0.05)) biases = tf.Variable(tf.constant(0.05, shape=[num_outputs])) # Multiply the input and weights, and then add the bias-values. layer = tf.matmul(input, weights) + biases return layer # CONVOLUTIONAL LAYER 1 layer_conv1, weights_conv1 = new_conv_layer(input=x, num_input_channels=3, filter_size=5, num_filters=32, name ="conv1") # Pooling Layer 1 layer_pool1 = new_pool_layer(layer_conv1, name="pool1") # RelU layer 1 layer_relu1 = new_relu_layer(layer_pool1, name="relu1") # CONVOLUTIONAL LAYER 2 layer_conv2, weights_conv2 = new_conv_layer(input=layer_pool1, num_input_channels=32, filter_size=3, num_filters=64, name= "conv2") # Pooling Layer 2 layer_pool2 = new_pool_layer(layer_conv2, name="pool2") # RelU layer 2 layer_relu2 = new_relu_layer(layer_pool2, name="relu2") # FLATTENED LAYER num_features = layer_relu2.get_shape()[1:4].num_elements() layer_flat = tf.reshape(layer_pool2, [-1, num_features]) # FULLY-CONNECTED LAYER 1 layer_fc1 = new_fc_layer(layer_flat, num_inputs=num_features, num_outputs=1000, name="fc1") # RelU layer 3 layer_relu3 = new_relu_layer(layer_fc1, name="relu3") # FULLY-CONNECTED LAYER 2 layer_fc2 = new_fc_layer(input=layer_relu3, num_inputs=1000, num_outputs=45, name="fc2") # Use Softmax function to normalize the output with tf.variable_scope("Softmax"): y_pred = tf.nn.softmax(layer_fc2) y_pred_cls = tf.argmax(y_pred, dimension = 1) # Use Cross entropy cost function with tf.name_scope("cross_ent"): cross_entropy = tf.nn.softmax_cross_entropy_with_logits_v2(logits = layer_fc2, labels = y_pred) cost = tf.reduce_mean(cross_entropy) # Use Adam Optimizer with tf.name_scope("optimizer"): optimizer = tf.train.AdamOptimizer(learning_rate = FLAGS.learning_rate).minimize(cost) # Accuracy with tf.name_scope("accuracy"): correct_prediction = tf.equal(y_pred_cls, y_true_cls) accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32)) # setup the initialisation operator init_op = tf.global_variables_initializer() # Pipeline of dataset and iterator dataset_train = tf.data.TFRecordDataset(datapath_train) dataset_validation = tf.data.TFRecordDataset(datapath_validation) dataset_test = tf.data.TFRecordDataset(datapath_test) # Parse the record into tensors. dataset_train = dataset_train.map(_extract_fn) dataset_validation = dataset_validation.map(_extract_fn) dataset_test = dataset_test.map(_extract_fn) # Generate batches dataset_train = dataset_train.batch(FLAGS.batch_size) iterator_train = dataset_train.make_initializable_iterator() next_element_train = iterator_train.get_next() dataset_validation = dataset_validation.batch(FLAGS.batch_size) iterator_validation = dataset_validation.make_initializable_iterator() next_element_validation = iterator_validation.get_next() dataset_test = dataset_test.batch(FLAGS.batch_size) iterator_test = dataset_test.make_initializable_iterator() next_element_test = iterator_test.get_next() print('\n Starting the CNN train') # Initialize the FileWriter writer = tf.summary.FileWriter("Training_FileWriter/") """ # create a summary for our cost and accuracy train_cost_summary = tf.summary.scalar("train_cost", cost) train_acc_summary = tf.summary.scalar("train_accuracy", accuracy) test_cost_summary = tf.summary.scalar("test_cost", cost) test_acc_summary = tf.summary.scalar("test_accuracy", accuracy)""" #PERFORM THE CNN OPERATIONS with tf.Session() as sess: sess.run(init_op) sess.run(iterator_test.initializer) # Add the model graph to TensorBoard writer.add_graph(sess.graph) # Loop over number of epochs print('\nTraining') for epoch in range(FLAGS.num_epochs): sess.run(iterator_train.initializer) sess.run(iterator_validation.initializer) start_time = time.time() """train_accuracy = 0 validation_accuracy = 0 acc_train_avg = 0 val_acc_avg = 0""" for batch in range(0, int(25200/FLAGS.batch_size)): img_train, shp_train, lbl_train = sess.run(next_element_train) #_, loss_train, acc_train, _train_cost_summary, _train_acc_summary = sess.run([optimizer, cost, accuracy, train_cost_summary, train_acc_summary], feed_dict = {x: img_train, y: lbl_train}) _, loss_train, acc_train = sess.run([optimizer, cost, accuracy], feed_dict = {x: img_train, y: lbl_train}) #train_accuracy+=acc_train #writer.add_summary(_train_cost_summary, epoch +1) #writer.add_summary(_train_acc_summary, epoch +1) end_time = time.time() #acc_train_avg = (train_accuracy/(int(25200/FLAGS.batch_size))) #TRAINING print("Epoch "+str(epoch+1)+" completed : Time usage "+str(int(end_time-start_time))+" seconds") print("\tAccuracy:") print("\t- Training Loss:\t{}", loss_train) print ("\t- Training Accuracy:\t{}",acc_train) The output after training is as shown below: Training Epoch 1 completed : Time usage 122 seconds Accuracy: - Training Loss: {} 0.0 - Training Accuracy: {} 0.035714287 Validation - Validation Accuracy: {} 0.035714287 Validation Loss: {} 0.0 Epoch 2 completed : Time usage 120 seconds Accuracy: - Training Loss: {} 0.0 - Training Accuracy: {} 0.035714287 Validation - Validation Accuracy: {} 0.035714287 Validation Loss: {} 0.0 Epoch 3 completed : Time usage 120 seconds Accuracy: - Training Loss: {} 0.0 - Training Accuracy: {} 0.035714287 Validation - Validation Accuracy: {} 0.035714287 Validation Loss: {} 0.0 Epoch 4 completed : Time usage 120 seconds Accuracy: - Training Loss: {} 0.0 - Training Accuracy: {} 0.035714287 Validation - Validation Accuracy: {} 0.035714287 Validation Loss: {} 0.0 There is no learning of the model. I have inspected several times, the logic seems to be ok. What could be the probable reason why this is constant even after changing the learning rate, epoch and also i have tried to generate several datasets.
akku
1

голосов
1

ответ
138

Просмотры

KERAS: How to set weights of Conv2D Layer explicitly using a tensor of same shape as required by weights?

I want to create a conv2d layer by explicitly defining the weight matrix of the layer (Conv2D has use_bias parameter set to False). I have been trying to do this using layer.set_weights([K]) where K is (?, 7, 7, 512, 512) Tensor. In simple Tensorflow API, it could probably be done by passing the tensor the filter parameter in tf.nn.conv2d(input, filter,..) Moreover, I have more problem and that i show should I address the batch dimension in the K Tensor because it has been generated by a network Basically I want to implement a hypernetwork in which i have generated the weights for the Conv2D layer specified above, from another network in the Tensor K. The weight Tensor K has shape [height, width, Filters, Channels] template= Input(shape=(448,684,3)) hyper_net= VGG16(weights='imagenet', include_top=False, input_tensor=None, input_shape=(448,684, 3)) k1= hyper_net(template) kconv1= hyper_net.get_layer(name='block5_conv1') config_conv1= kconv1.get_config() k1conv1 = Conv2D.from_config(config_conv1)(k1) kconv2= hyper_net.get_layer(name='block5_conv2') config_conv2= kconv2.get_config() k1conv2 = Conv2D.from_config(config_conv2)(k1conv1) k1pool1= MaxPooling2D(pool_size=(2,3))(k1conv2) k1pool1= Reshape((7,7,512,1))(k1pool1) print(k1pool1.shape) K= Conv3D(512, (1,1,1), strides=(1, 1, 1), padding='valid', activation=None, use_bias=True, kernel_initializer='he_normal', bias_initializer='zeros', kernel_regularizer=l2(0.01), bias_regularizer=l2(0.01))(k1pool1) ortho= Input(tensor=tf.convert_to_tensor(O)) base_model = VGG16(weights='imagenet', include_top=False, input_tensor=None, input_shape=(1760, 1760, 3)) o1= base_model(ortho) Oconv1= Conv2D(512, (7, 7), activation='relu', padding='valid',use_bias=False) Oconv1.set_weights([K]) It gives error as: ValueError: You called `set_weights(weights)` on layer "conv2d_4" with a weight list of length 1, but the layer was expecting 0 weights. Provided weights: [
1

голосов
0

ответ
30

Просмотры

Нейронные сети и неупорядоченные входные данные

Много работы было сделано в последние годы на нейронных сетях, где вход является коллекцией. В частности, сверточные сети часто работают хорошо на N-мерных массивы (эксплуатирующих пространственную структуру) и рецидивирующий нейронные сети, такие как LSTM часто работают наилучшим образом на данных временных рядов (эксплуатирующих временную структуру). Я в настоящее время рассматривает вопрос использования нейронных сетей для эвристического руководства поиска в доказательстве теорем. Одна из проблем здесь является то, что вход принимает форму не из массива, а из множества статей, где не так много естественного упорядочения между пунктами, и мы не можем сказать, что каждое предложение будет в основном взаимодействовать с ближайшими соседями в пространство. Помимо «мешок слов» для текстовых документов (который работает, потому что есть фиксированный словарь),
rwallace
1

голосов
0

ответ
32

Просмотры

Wrong input shape for temporal 1D convolution in Keras

regarding input shapes – have been using LSTM for a while and didn’t have any problems with it but now I tried 1D convolutional layers for speeding up processing and now I run into trouble – can you see what the problem is with the following? (Dummy data used here) I get an error for the fitting: ValueError: Error when checking target: expected dense_17 to have 2 dimensions, but got array with shape (400, 20, 2) I cannot see what is wrong here?! Code is shown below #load packages import numpy as np import pandas as pd from keras.models import Sequential from keras.layers import Dense, Dropout, Activation, GRU, TimeDistributed from keras.layers import Conv1D, MaxPooling1D, Flatten, GlobalAveragePooling1D from keras.layers import Conv2D, MaxPooling2D from keras.utils import np_utils nfeat, kernel, timeStep, length, fs = 36, 8, 20, 100, 100 #data (dummy) data = np.random.rand(length*fs,nfeat) classes = 0*data[:,0] classes[:int(length/2*fs)] = 1 #make correct input shape (batch, timestep, feature) X = np.asarray([data[i*timeStep:(i + 1)*timeStep,:] for i in range(0,length * fs // timeStep)]) #classes Y = np.asarray([classes[i*timeStep:(i + 1)*timeStep] for i in range(0,length * fs // timeStep)]) #split into training and test set from sklearn.model_selection import train_test_split trainX, testX, trainY, testY = train_test_split(X,Y,test_size=0.2,random_state=0) #one-hot-encoding trainY_OHC = np_utils.to_categorical(trainY) trainY_OHC.shape, trainX.shape #set up model with simple 1D convnet model = Sequential() model.add(Conv1D(8,10,activation=’relu’,input_shape=(timeStep,nfeat))) model.add(MaxPooling1D(3)) model.add(Flatten()) model.add(Dense(10,activation=’tanh’)) model.add(Dense(2,activation=’softmax’)) model.summary() #compile model model.compile(loss=’mse’,optimizer=’Adam’ ,metrics=[‘accuracy’]) #train model model.fit(trainX,trainY_OHC,epochs=5,batch_size=4, validation_split=0.2)
Tobias Piechowiak
1

голосов
1

ответ
17

Просмотры

Есть ли заполнение и расширение влияют на количество плюхается в сверточном слое?

Насколько я знаю, только размер, размера выходного ядра, количество входных каналов, количество выходных каналов и размера партии влияет на количестве плюхается в сверточном слое. Но некоторые люди говорили мне, что отступы и дилатация также влияют на FLOPs. Это правда? Если это правда, то почему?
gasoon
1

голосов
1

ответ
80

Просмотры

What's the difference between convolution in Keras vs Caffe?

I'm trying to replicate a large Caffe network into Keras (based on tensorflow backend). But I'm having a large trouble doing it even at a single convolutional layer. Simple Convolution in General: Let's say we had a 4D input with shape (1, 500, 500, 3), and we had to perform a single convolution on this input with 96 filters with kernel size of 11 and 4x4 strides. Let's set our weight and input variables: w = np.random.rand(11, 11, 3, 96) # weights 1 b = np.random.rand(96) # weights 2 (bias) x = np.random.rand(500, 500, 3) Simple Convolution in Keras: This is how it could be defined in Keras: from keras.layers import Input from keras.layers import Conv2D import numpy as np inp = Input(shape=(500, 500, 3)) conv1 = Conv2D(filters=96, kernel_size=11, strides=(4, 4), activation=keras.activations.relu, padding='valid')(inp) model = keras.Model(inputs=[inp], outputs=conv1) model.layers[1].set_weights([w, b]) # set weights for convolutional layer predicted = model.predict([x.reshape(1, 500, 500, 3)]) print(predicted.reshape(1, 96, 123, 123)) # reshape keras output in the form of Caffe Simple Convolution in Caffe: simple.prototxt: name: "simple" input: "inp" input_shape { dim: 1 dim: 3 dim: 500 dim: 500 } layer { name: "conv1" type: "Convolution" bottom: "inp" top: "conv1" param { lr_mult: 1 decay_mult: 1 } param { lr_mult: 2 decay_mult: 0 } convolution_param { num_output: 96 kernel_size: 11 pad: 0 stride: 4 } } layer { name: "relu1" type: "ReLU" bottom: "conv1" top: "conv1" } Caffe in Python: import caffe net = caffe.Net('simple.prototxt', caffe.TEST) net.params['conv1'][0].data[...] = w.reshape(96, 3, 11, 11) # set weights 1 net.params['conv1'][1].data[...] = b # set weights 2 (bias) net.blobs['inp'].reshape(1, 3, 500, 500) # reshape input layer to fit our input array x print(net.forward(inp=x.reshape(1, 3, 500, 500)).get('conv1')) Problem: If we executed both of the snippets of code, we would notice that outputs are different from each other. I understand that there are few differences such as symmetric padding of Caffe, but I didn't even use padding here. Yet the output of Caffe is different from output of Keras... Why is this so? I know that Theano backend doesn't utilize correlation like Caffe does and hence it requires kernel to be rotated by 180 degrees, but is it the same for tensorflow? from what I know, both Tensorflow and Caffe use cross-correlation instead of Convolution. How could I make two identical models in Keras and Caffe that use convolution? Any help would be appreciated, thanks!
ShellRox
1

голосов
1

ответ
45

Просмотры

CNN output accuracy below 50%

I am new with using unsupervised CNN model in python. I am trying to use CNN model for image classification with unsupervised spectrogram input images. Each image is of size 523 width and 393 height. And I have tried the following code X_data = [] files = glob.glob ("C:/train/*.png") for myFile in files: image = cv2.imread (myFile) image_resized = misc.imresize(image, (523,393)) image_resi = misc.imresize(image_resized, (28, 28)) assert image_resized.shape == (523,393, 3), "img %s has shape %r" % (myFile, image_resized.shape) X_data.append (image_resi) X_datatest = [] files = glob.glob ("C:/test/*.png") for myFile in files: image = cv2.imread (myFile) image_resized = misc.imresize(image, (523,393)) image_resi = misc.imresize(image_resized, (28, 28)) assert image_resized.shape == (523,393, 3), "img %s has shape %r" % (myFile, image_resized.shape) X_datatest.append (image_resi) input_img = Input(shape=(28,28,3)) x = Conv2D(32, (3, 3), activation='relu', padding='same')(input_img) x = MaxPooling2D((2, 2), padding='same')(x) x = Conv2D(64, (3, 3), activation='relu', padding='same')(x) x = MaxPooling2D((2, 2), padding='same')(x) x = Conv2D(32, (3, 3), activation='relu', padding='same')(x) encoded = MaxPooling2D((2, 2), padding='same')(x) x = Conv2D(32, (3, 3), activation='relu', padding='same')(encoded) x = UpSampling2D((2, 2))(x) x = Conv2D(32, (3, 3), activation='relu', padding='same')(x) x = UpSampling2D((2, 2))(x) x = Conv2D(8, (3, 3), activation='relu')(x) x = UpSampling2D((2, 2))(x) decoded = Conv2D(3, (3, 3), activation='sigmoid', padding='same')(x) autoencoder = Model(input_img, decoded) autoencoder.compile(optimizer='adadelta', loss='binary_crossentropy', metrics=['accuracy']) X_data = np.array(X_data) X_datatest = np.array(X_datatest) ##print('X_data shape:', X_data) X_data= X_data.astype('float32') / 255. X_datatest = X_datatest.astype('float32') / 255. X_data = np.reshape(X_data, (len(X_data), 28, 28, 3)) # adapt this if using `channels_first` image data format X_datatest = np.reshape(X_datatest, (len(X_datatest), 28, 28, 3)) # adapt this if using `channels_first` image data format hist=autoencoder.fit(X_data, X_data, epochs=5,batch_size=128,verbose = 2,validation_data=(X_datatest, X_datatest)) ## callbacks=[TensorBoard(log_dir='/tmp/autoencoder')]) avg = np.mean(hist.history['acc']) print('The Average Training Accuracy is', avg) But the output is 33% only for the accuracy. I don't know why. Can anyone help me with this and try to make me understand the numbers of filters, kernels and the resize with 28*28 based on what? And why we just use the image size which is here 523 width and 393 height?
Hadeer Zayat
1

голосов
0

ответ
44

Просмотры

Неконтролируемое модель keras CNN

Я новичок с использованием неконтролируемой модели CNN в питоне. Я пытаюсь использовать CNN модель для классификации изображений с неконтролируемыми спектрограммами входных изображений. Каждое изображение имеет размер 523 по ширине и высоте 393. И я попытался следующий код X_data = [] = файлы glob.glob ( "C:. / Поезд / * PNG") для Myfile в файлах: изображение = cv2.imread (Myfile) image_resized = misc.imresize (изображение, ( 523393)) image_resi = misc.imresize (image_resized, (28, 28)) утверждают, image_resized.shape == (523393, 3), "IMG% s имеет форму% г" % (MyFile, image_resized.shape) X_data.append ( image_resi) X_datatest = [] = файлы glob.glob ( "C:. / тест / * PNG") для MyFile в файлах: изображение = cv2.imread (MyFile) image_resized = misc.imresize (изображение, (523393)) = image_resi misc.imresize (image_resized, (28, 28)) утверждают image_resized. метрики = [ 'точность']) autoencoder.fit (x_train_noisy, X_data, эпохи = 100, batch_size = 128, многословный = 2, validation_data = (x_test_noisy, X_datatest), обратные вызовы = [TensorBoard (LOG_DIR = '/ TMP / ТБ', histogram_freq = 0, write_graph = False)]) Я попытался шуметь и кормить его в качестве меток, потому что я не имеют метки, потому что это неконтролируемые данные спектрограммы. Но выход 33% только для точности. Я не знаю, почему. Может кто-нибудь помочь мне с этим и попытаться заставить меня понять количество фильтров, ядер и изменение размера с 28 * 28, основываясь на что? И почему мы используем только размер изображения, которое здесь 523 ширина и высота 393? многословным = 2, validation_data = (x_test_noisy, X_datatest), обратные вызовы = [TensorBoard (LOG_DIR = '/ TMP / Т.Б.', histogram_freq = 0, write_graph = False)]) Я пытался сделать шум и подают его в качестве меток, потому что я Бесполезный «т иметь ярлыки, потому что это неконтролируемые данные спектрограммы. Но выход 33% только для точности. Я не знаю, почему. Может кто-нибудь помочь мне с этим и попытаться заставить меня понять количество фильтров, ядер и изменение размера с 28 * 28, основываясь на что? И почему мы используем только размер изображения, которое здесь 523 ширина и высота 393? многословным = 2, validation_data = (x_test_noisy, X_datatest), обратные вызовы = [TensorBoard (LOG_DIR = '/ TMP / Т.Б.', histogram_freq = 0, write_graph = False)]) Я пытался сделать шум и подают его в качестве меток, потому что я Бесполезный «т иметь ярлыки, потому что это неконтролируемые данные спектрограммы. Но выход 33% только для точности. Я не знаю, почему. Может кто-нибудь помочь мне с этим и попытаться заставить меня понять количество фильтров, ядер и изменение размера с 28 * 28, основываясь на что? И почему мы используем только размер изображения, которое здесь 523 ширина и высота 393? т имеют метки, потому что это неконтролируемые данные спектрограммы. Но выход 33% только для точности. Я не знаю, почему. Может кто-нибудь помочь мне с этим и попытаться заставить меня понять количество фильтров, ядер и изменение размера с 28 * 28, основываясь на что? И почему мы используем только размер изображения, которое здесь 523 ширина и высота 393? т имеют метки, потому что это неконтролируемые данные спектрограммы. Но выход 33% только для точности. Я не знаю, почему. Может кто-нибудь помочь мне с этим и попытаться заставить меня понять количество фильтров, ядер и изменение размера с 28 * 28, основываясь на что? И почему мы используем только размер изображения, которое здесь 523 ширина и высота 393?
Hadeer Zayat
1

голосов
0

ответ
51

Просмотры

Tensorflow CNN обучение прекращается без причины

У меня есть этот Python код для обучения CNN с помощью Tensorflow. Он прекрасно работает, пока я не решил использовать MirroredStrategy для повышения производительности. Тогда это было необходимо внести некоторые изменения: я должен был прекратить использование tf.estimator.inputs.numpy_input_fn (), так как он требует MirroredStrategy функции ввода, который возвращает набор данных. Я в основном копировали train_input_fn из Datasets для Оценщики использовать в качестве моей входной функции Теперь, кажется, работает без каких-либо проблем, но это не обучение вообще ничего, и через несколько секунд он прекращает работать без каких-либо ошибок. Немного больше деталей: Я мониторинг моего процессора и использование GPU во время тренировки, и когда я запускаю код частота GPU повышается, пока программа не останавливается. Я уже пытался изменить размер партии, но никаких изменений. Мой GPU является GTX 1070 драйвер был обновлен, а также и я м при использовании tensorflow-GPU версии 1.12.0 в моей среде выход ядра: В работе [1]: runfile ( 'D: /MS/CNN.py', wdir = 'D: / МС') ИНФОРМАЦИЯ: tensorflow: Инициализация RunConfig с распределением стратегии. INFO: tensorflow: Не используя Распределить координатор. ИНФОРМАЦИЯ: tensorflow: Использование конфигурации: { '_model_dir': 'models3', '_tf_random_seed': Нет '_save_summary_steps': 100, '_save_checkpoints_steps': Нет, '_save_checkpoints_secs': 600, '_session_config': allow_soft_placement: истинные graph_options {rewrite_options {meta_optimizer_iterations: один}}, '_keep_checkpoint_max': 5 '' _keep_checkpoint_every_n_hours: 10000, '_log_step_count_steps': 100, '_train_distribute':, '_device_fn': Нет, '_protocol': Нет, '_eval_distribute': Нет, ' _experimental_distribute ': Нет, '_service': Нет, '_cluster_spec':, '_task_type': 'Рабочий', '_task_id': 0, '_global_id_in_cluster': 0, '_Master': '', '_evaluation_master': '', '_is_chief': Правда, '_num_ps_replicas': 0, '_num_worker_replicas': 1, '_distribute_coordinator_mode': нет} ИНФОРМАЦИЯ: tensorflow: прибор доступен, но не используется распространения стратегии: / устройство: ЦП: 0 ИНФОРМАЦИЯ: tensorflow: сконфигурирован nccl все-свертка. INFO: tensorflow: Вызов model_fn. INFO: tensorflow: batch_all_reduce вызывается для партий размера = 16 с алгоритмом = nccl, num_packs = 1, agg_small_grads_max_bytes = 0 и agg_small_grads_max_group = 10 В [1]: код Training: Защита train_input_fn (характеристики, этикетки, batch_size): # Преобразовать входы в набора данных. DataSet = tf.data.Dataset.from_tensor_slices ((признаки, этикетка)) # Перемешать, повтор, и пакетные примеры. Набор данных = dataset.shuffle (1000) .repeat (кол = 100) Пакетный (batch_size) # Возвращают набор данных. возвращать набор данных gpu_distribution = tf.contrib.distribute.MirroredStrategy () run_config = tf.estimator.RunConfig (train_distribute = gpu_distribution) классификатор = tf.estimator.Estimator (model_fn = cria_rede, конфиг = run_config, model_dir = 'models3') classifier.train (input_fn = лямбда: train_input_fn (x_data, y_data, 2), ступени = 3000) #x_data и y_data является двумерный numpy.ndarrays
MWsan
1

голосов
2

ответ
55

Просмотры

Почему дилатационная Свертка Layer не уменьшает разрешение рецептивного поля?

я пытаюсь понять дилатационный сверток. Я уже знаком с увеличением размера ядра, заполняя пробелы нулями. Его полезно, чтобы покрыть большую площадь и получить лучшее представление о более крупных объектах. Но, пожалуйста, может кто-нибудь объяснить мне, как это возможно, что расширенные сверточные слои сохранить разрешение происхождения рецептивного поля. Он используется в структуре deeplabV3 + с atrous скоростью от 2 до 16. Как можно использовать дилатационный сверток с явным большим ядром без заполнения нулей и размера выходного будет соответствовать. deeplabV3 + структура: Im смущены, потому что, когда я взглянуть на этой интерпретации: Outputsize (3х3) из расширяющейся свертки слоя меньше? Спасибо большое за вашу помощь! Lukas
Lukas

Просмотр дополнительных вопросов

Связанные вопросы