Вопросы с тегами [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
0

голосов
0

ответ
22

Просмотры

Design neural network to find inputs with highest probability of class

I am designing a neural network for classification with the aim to find the inputs with the highest probability that they belong to one of two classes. There are two classes, class A and class B. I have a set of data of which I want to find the inputs that have the highest probability that they belong to class B. This is different to conventional classification in that I'm not interested in the correct labelling of all inputs. I'm only interested in the correct labelling of the inputs that are labelled with a high probability to belong to class B. So the accuracy of the network could be calculated like this: Train the neural network Feed the validation data into the network Sort the resulting outputs, together with the known targets, by the returned probability for class B Take the top N samples, e.g. top 1% (now we have the outputs with the highest probability for class B) Count how many of the taken samples were actually of class B The accuracy is the number of actual instances of class B counted, divided by the number of samples taken N Say, we have a simple network like this: model = keras.Sequential([ keras.layers.Dense(7, input_dim=len(inputs_training[0]), activation=tf.nn.relu, kernel_regularizer=keras.regularizers.l2(0.0)), keras.layers.Dense(7, activation=tf.nn.relu, kernel_regularizer=keras.regularizers.l2(0.000001)), keras.layers.Dense(7, activation=tf.nn.relu, kernel_regularizer=keras.regularizers.l2(0.000001)), keras.layers.Dense(1, activation=tf.nn.sigmoid, kernel_regularizer=keras.regularizers.l2(0.00000)) ]) model.compile(optimizer='adam', loss=binary_crossentropy, metrics=['accuracy']) model.fit( np.array(inputs_training), np.array(targets_training), epochs=15, verbose=0, class_weight={0: 1, 1: 4} ) The problem is that, the more features (inputs) I add, the less accurate the prediction becomes - even though each features performs well on it's own. For example, I can use a single feature that gives me 40% accuracy in the top 1%. If I add two more features that perform similarly on their own, the accuracy drops to, say, 25-30%. Class B makes about 15% of the data. The second problem is that the accuracy in the top 1% fluctuates a lot. I have tried: Changing the number of layers / neurons, epochs Changing the class weights Changing regularisation parameters, including using l1 Trying different loss functions I speculate that none of this works because the neural network is optimising for the classification of all inputs, not optimizing to produce the highest accuracy in the top 1%. Is there a way how I can stir the neural network to optimize so that the most probable results are correct, but the remaining 99% can tend to be mislabelled? Demo code: https://pastebin.com/CnDpCjdp
ig-dev
1

голосов
2

ответ
105

Просмотры

Предсказание пропущенных слов в предложении - Natural Language Processing Model [закрыт]

У меня есть предложение ниже: Я хочу ____ машины, потому что это дешево. Я хочу, чтобы предсказать, пропущенное слово, используя модель NLP. Что NLP модель я должен использовать? Благодарю.
Eliyah
1

голосов
1

ответ
378

Просмотры

Нейронные сети высокого доверия Неточность Предсказания

Я обучаемый нейронная сеть на задаче классификации, и она учится, хотя его точность не высока. Я пытаюсь выяснить, какие испытания Примеров не уверен, так что я могу получить еще некоторое представление о том, что происходит. Для того, чтобы сделать это, я решил использовать стандартные SoftMax вероятности в Tensorflow. Чтобы сделать это, я назвал tf.nn.softmax (логит-анализ), и используются вероятности, предоставленные здесь. Я заметил, что много раз вероятность была 99%, но прогноз все еще не так. Таким образом, даже тогда, когда я только рассмотреть примеры, которые имеют предсказание вероятность выше, чем 99%, я получаю плохую точность, только 2-3 процентов выше, чем моя первоначальная точность. Кто-нибудь есть какие-либо идеи относительно того, почему сеть настолько уверена в неправильных предсказаниях? Я еще новичок в глубокое обучение, поэтому ищу некоторые идеи, чтобы помочь мне. Кроме того, используют SoftMax вероятностей правильного способ сделать определение доверия прогнозов от нейронной сети? Если нет, то есть ли лучший способ? Спасибо! Edit: С ниже ответ, кажется, что моя сеть просто работает плохо. Есть еще один способ, чтобы определить, какие предсказания сетевой марка, вероятно, будет неправильно к тому же, глядя на доверии (поскольку доверие не кажется, работает хорошо)?
hockeybro
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

ответ
52

Просмотры

Потеря не уменьшается в нейронной сети

Я реализую вариант CNN, описанный в этом документе. Моя проблема заключается в том, что потеря не уменьшается, и я не понимаю, почему. То же самое надо сказать и о точности (застрял на 0,5 больше или меньше). Эта проблема классификации 2 классов. Я использую данные с этого сайта: Я подозревал, что оптимизатор, поэтому я изменил его Whithout каких-либо улучшений. Я уверен, что данные, я использую это нормально, потому что я использовал его на LSTM и классификатор было хорошо. Вот мой код: от keras.layers импортирует Встраивание из keras.layers импорта Conv2D из keras.models импорта Sequential из keras.layers импорта MaxPooling2D из keras.layers импорт Reshape из keras.layers импорт Развертки из keras.layers импорта Плотными из keras. слои импорт Выпадения из keras.layers импорта ввода из keras импорта бэкэнда как K из keras. Модели импорта модели импорта tensorflow в ТФ из sklearn импорта предварительной обработки импорта keras импорта NumPy в н.п. импорт PDB #using несколько фильтров конфигурации = tf.ConfigProto () # Не предварительно выделить память; выделить по мере необходимости config.gpu_options.allow_growth = True # Разрешить только в общей сложности половину памяти GPU, которые будут выделены config.gpu_options.per_process_gpu_memory_fraction = 0,7 # Создание сеанса с указанными выше параметрами, указывающими. config.gpu_options.per_process_gpu_memory_fraction = 0,65 K.tensorflow_backend.set_session (tf.Session (конфиг = конфигурация)) класс Классификатор (): Защита __init __ (я, Vocab, MAXLEN = 75): self.model = Sequential () self.EMBED_DIM = 30 self.batch_size = 30 self.MAX_SEQUENCE_LENGTH = MaxLen self.nb_labels = 2 self.model = Sequential () self.Vocab = Vocab DEF нужным (я, X, у): #pdb.
chiplusplus
1

голосов
1

ответ
106

Просмотры

When neural network loss is descending but the accuracy is not increased?

Я реализовать алгоритм обратного распространения пакетной основы для нейронной сети с одним скрытым слоем и активацией сигмовидной функции. Выходной слой является одним горячим сигмовидным слоем. За вычетом первого слоя z1. После того, как применить сигмовидной становится a1. аналогичным образом, мы имеем z2 и a2 для второго слоя. Процесс обратного распространения, как это: х, у = train_data, train_target для I в диапазоне (0, num_passes): z1 # вызов, a1, г2, а2 = предсказывающие (current_model, х) # напомним derv_out2 = (у - а2 ) * (а2 * (1 - а2)) Delta2 = np.matmul (np.transpose (а1), derv_out2) / train_size dw2 = Delta2 + reg_lambda * ш2 db2 = np.mean (b2 * derv_out2, 0) = a1 derv_out1 * np.reshape (np.sum (Delta2 * w 2, 1), [1, a1.shape [1]]) Delta1 = np.matmul (np.transpose (х), derv_out1) / train_size DW1 = Delta1 + reg_lambda * w1 DB1 = np.mean (b1 * derv_out1, 0) Обновление # градиента параметр спуска w1 + = learning_rate * DW1 b1 + = learning_rate * DB1 ш2 + = learning_rate * dw2 b2 + = learning_rate * db2 # присвоить новые параметры в модели current_model = { 'w1': w1, 'b1' : b1, «w2»: w2, «b2»: b2} полного код файл: ссылка потери выше алгоритмов снижаются, но точность классификации составляет около случайного выбора. В чем проблема? но точность классификации о случайном выборе. В чем проблема? но точность классификации о случайном выборе. В чем проблема?
MohsenIT
1

голосов
1

ответ
112

Просмотры

прогнозирования и принятия решений с нервной netwok

Я новичок в нейронной сети, и у меня есть основной вопрос, чтобы убедиться, что я имею в виду о применение нейронных сетей не является неправильным. позволяет сказать, у меня есть два набора данных в моей project.The первого набора данных дается мне и второй набор данных был рассчитан позже. Я хочу найти взаимосвязь и соотношение между этими двумя наборами данных, а затем предсказать второй набор данных для любого иного первого набора данных. является нейронной сетью, что мне нужно? если да, то как я могу начать делать это? любая помощь приветствуется.
Far
1

голосов
1

ответ
65

Просмотры

Q-Learning: Inaccurate predictions

Я недавно начал получать в Q-Learning. В настоящее время я пишу агент, который должен играть простую настольную игру (Отелло). Я играю против случайного противника. Однако он не работает должным образом. Либо мой агент остается около 50% винрейта или становится еще хуже, чем дольше я тренируюсь. Выход моей нейронной сети является 8x8 матрица с Q-значений для каждого хода. Моя награда заключается в следующем: 1 за победу -1 за потерю недопустимый рассчитывает двигаться как потеря поэтому награда -1 в противном случае я экспериментировал с прямой наградой -0.01 или 0. Я сделал некоторые замечания, которые я не могу объясняет: Когда я считаю, прогноз на первый шаг (мой агент всегда начинается) предсказания для недействительных ходов получить действительно близко к -1 очень быстро. Предсказания для действительных движений, однако, кажется, подняться дольше я играю. Они даже пошли выше 1 (они были выше 3 в какой-то момент), что не должно быть возможным, так как я обновляю свои Q-значения в соответствии с Беллмана-уравнением (с альфа = 1), где гамма является показателем менее 1 (я использую 0,99 большую часть времени). Если игра длится около 30 получается, я бы ожидать, макс / мин значения + -0.99 ^ 30 = + - 0,73. Кроме того, прогнозы на исходное состояние, кажется, самый высокий. Еще одно наблюдение я сделал, это то, что сеть кажется слишком оптимистичным с его предсказаниями. Если я считаю, что прогноз на ход, после чего игра будет потеряна, предсказания для недействительных витков снова близко к -1. Действует поворот (ы), однако, часто имеют предсказания значительно выше 0 (например, 0,1 или даже 0,5). Я несколько потерял, так как я не могу объяснить, что может привести мои проблемы, так как я уже дважды проверил свои награды / целевые матрицы.
Exzone
1

голосов
1

ответ
497

Просмотры

Tensorflow 1.4 двунаправленного RNN не работает, как ожидалось

Я пытаюсь использовать двунаправленный РНН и передавать вывод через CNN для классификации текста. Тем не менее, я получаю все виды ошибок формы с двунаправленной RNN. Хотя, если я использую два динамических РННА с обратными оп во втором слое, по-видимому, отлично работают: Вот двунаправленная РНН код, который не работает для меня: # Двунаправленного LSTM слой с tf.name_scope ( «двунаправленный LSTM»): lstm_fw_cell = tf.nn.rnn_cell.BasicLSTMCell (hidden_size, forget_bias = 1,0) lstm_bw_cell = tf.nn.rnn_cell.BasicLSTMCell (hidden_size, forget_bias = 1,0) self.lstm_outputs _ = tf.nn.bidirectional_dynamic_rnn (lstm_fw_cell, lstm_bw_cell, самостоятельно. embedded_chars, sequence_length = self.seqlen, DTYPE = tf.float32) self.lstm_outputs = tf.concat (self.lstm_outputs, sequence_length = self.seqlen, DTYPE = tf.float32) self.lstm_outputs_bw = array_ops.reverse_sequence (TMP, seq_lengths = self.seqlen, seq_dim = 1) Соединить выходы self.lstm_outputs = tf.add (self.lstm_outputs_fw, self.lstm_outputs_bw, Name = «lstm_outputs») Что я делаю неправильно с двунаправленной RNN? Я передаю выход это CNN и ошибка возникает при вычислении Здесь остальная часть кода: # Свертка + maxpool слой для каждого размера фильтра pooled_outputs = [] для г, в filter_size Перечислим (filter_sizes): с tf.name_scope ( "Conv-maxpool-% S" % filter_size): # Свертка слой filter_shape = [filter_size, hidden_size, 1, num_filters] W = tf.Variable (tf.truncated_normal (filter_shape, StdDev = 0,1),
MLNINJA
1

голосов
0

ответ
362

Просмотры

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

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

голосов
1

ответ
187

Просмотры

Как игнорировать конкретные столбцы для расчета SoftMax внимания?

Я реализую модель, которая основана на MemoryNetworks. У меня есть триплеты данные (контекст, запрос, ответ). И я хочу, чтобы вычислить внимание. Внимание указывает, какие предложения в контексте должны быть сфокусированы. Для того, чтобы сформулировать мини-партию, я использую нулевые Прокладки для создания контекста данных. Таким образом, следующее данные внимания. И 0 значения показывают результат вложений нулевой проложенный контекста. В такой информации, я хочу, чтобы применить SoftMax к индексам 0, 1, 2, 3, последний. Таким образом, модель должна игнорировать нулевые столбцы отступов. Так как же я понимаю, что это? Я хочу знать такую ​​технику, когда мы используем нуль-отступы и внимание механизмы. Хотя я предпочитаю pytorch, любые инструменты или просто описание ответы также будут оценены. Перед SoftMax. torch.bmm (Contex, д) 109,8601 77,6376 68,3927 199,1673 0,0000 0,0000 0,0000 0,0000 0,0000 0,0000 0,0000 0. 0000 0,0000 0,0000 348,0155 [torch.cuda.FloatTensor размер 15 (GPU 0)] После SoftMax. F.softmax (torch.bmm (Contex, д)) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 [torch.cuda.FloatTensor размера 15 (GPU 0)]
jef
1

голосов
0

ответ
131

Просмотры

a TypeError in fit function when using keras with theano backend

моя Theano версия 1.0.1 + неизвестна. мой keras версия 2.1.3 я уверен, реализации сложены LSTM автоассоциатора в keras и это мой код: = x_train.shape временных шаги [1] = 1 input_dim входы = Вход (batch_shape = (1, временные шаги, input_dim)) кодируются = LSTM (7, return_sequences = True) (входы), кодируемый = LSTM (5, return_sequences = True) (кодируется), кодируемый = LSTM (3) (кодируется) декодируется = RepeatVector (временные шаги) (кодированные) декодируются = LSTM (5, return_sequences = True ) (декодированы) декодированные = LSTM (7, return_sequences = True) (декодированы) декодируется = LSTM (input_dim, return_sequences = True) (декодированы) sequence_autoencoder = модели (входы, декодируется) кодер = Модель (входы, закодированный) sequence_autoencoder.compile ( потери = 'mean_squared_error', оптимизатор = 'Адам') sequence_autoencoder.fit (x_train, x_train, эпохи = 100, batch_size = 1, перетасовка = True,) Это дает мне следующее сообщение об ошибке: Ошибка типа: Радиопередача структура выходного сканирования (TensorType (float32, 3D)) не согласуется с тем, представленной в output_info (TensorType (float32, Col)). Выход на оси 1, значение False, но это правда на оси 2 в output_info. Это может произойти, если один из размерности закреплен на 1 на входе, в то время как он по-прежнему переменная на выходе, или заместитель verca. Вы должны привести их в соответствие, например, с помощью theano.tensor. {Patternbroadcast, unbroadcast, addbroadcast}.
Mostafa Kotb
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

голосов
1

ответ
432

Просмотры

Как правильно использовать weight_column при работе с tf.estimator.DNNClassifier в Tensorflow (или как я делаю предвзятую функцию стоимости)?

Я использую https://www.tensorflow.org/api_docs/python/tf/estimator/DNNClassifier Скажем, у меня есть проблема классификации. Попытка классифицировать 2 вещи. Class1 является Happy Face, Class2 это не Happy Face. В данном конкретном случае, при взгляде на 1000 + образцов каждый день, я просто хочу, чтобы захватить 10 лучших Happy Faces. Так что на самом деле, я просто хочу быть очень уверены, что верхние 10 граней являются счастливыми лицами. Так что, если она классифицирует Happy Face как не Happy Face, я хорошо с ним. Он может пропустить несколько (или совсем честно 100 из 1000-х годов + в день он будет рассматривать). Однако, если он неправильно классифицирует Не счастливое лицо как Happy Face ... я не буду доволен результатом. Таким образом, можно сказать, что: ХОРОШО = TP = (истина) Happy Face, (прогноз) Happy Face BAD = FP = (истина) Не Happy Face, (прогноз) Happy Face ХОРОШО = TN = (истина) Не Happy Face, (Прогноз) Не Happy Face OK = FN = (истина) Happy Face (прогноз) Не Happy Face Довольно много, я могу жить со случайным FN (Ложноотрицательный). Но я действительно не хочу FP (False Positive) Я заинтересован в использовании веса столбец «downweight» все из одного класса, и «upweight» другую. В конце концов, я хочу какой-то предвзятого функции потерь / затрат. При обучении, FP должна «стоимость» более, FN, должны по-прежнему стоит, но немного меньше. Глядя на DNNClassifier, кажется, что weight_column может быть ответом. При обучении, я мог бы использовать установить все счастливые лица на вес 1.5+ (или что-то, нужно экспериментировать). И я мог бы установить все не счастливые лица на 0,5 (или любой другой). Таким образом, речь идет вниз на несколько вопросов: Это то, что колонна веса предназначена для использования? Я вижу, что столбец вес должен быть функция / вход. В этом случае, я бы не хотел, колонка вес будет использоваться в качестве признака, потому что я предполагаю, что модель будет забрать на соотношении веса к классификации, и в значительной степени полагаться на этот вход в качестве предсказателя. Таким образом, не tensorflow использовать столбец веса в качестве входных данных? Я надеюсь, что это не так. Предполагая, что / TF надеясь не использовать колонку веса для ввода, при прогнозировании / оценке, то, что лань я прохожу в течение колонки веса? 1? Если weight_column это не ответ, что является рекомендуемым решением для обработки сценария, как это (смещенной функция затрат для одного конкретного класса)? Мне не нужна модель, чтобы быть 100% точным на всех классификациях. Но для одного класса, когда он говорит, что это счастливое лицо, Я хочу, чтобы это было довольно Данг уверен, что это Happy Face. Если он пропускает несколько счастливых лиц, и считает, что они не являются счастливыми лицами. Все нормально. До тех пор, как я получаю мои лучшие 10 «самый счастливый» стоит в день, я рад :) Спасибо за вашу помощь. Я ценю его.
mschmidt42
1

голосов
1

ответ
130

Просмотры

Почему tensorflow Переменные результатов динамического (или статический) РНН с LSTM клетки имеет плюс-один размерностью?

Мой вопрос о размерности элементного динамический или статический РНН выходы игровая. nlu_input = tf.placeholder (tf.float32, форма = [4,1607,1]) клетки = tf.nn.rnn_cell.BasicLSTMCell (80) outts, состояния = tf.nn.dynamic_rnn (ячейка = клетка, входы = nlu_input, DTYPE = tf.float32) Тогда tf.gloabal_valiables () возвращает следующий список. [,] Я ожидал 'РНН / basic_lstm_cell / Ядра: 0' tf.Variable формы = (80, 320), так как 320 = 4 * 80 и номер блока 80. Почему размерность ядра увеличивается?
Atsu
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

ответ
76

Просмотры

Машинное обучение: Сбор скрытых нейронов на основе данных выборки

Я недавно нашел этот ответ на вопрос о выборе хорошей структуры нейронной сети, в частности, в отношении скрытых слоев и их нейроны. Ответ дает общую формулу, которая производит неоптимальный, но хорошей отправной точкой для работы в сети. Nh = (Ns) / (а * (Ni + No)) Где: Ni = число входных нейронов. Нет = количество выходных нейронов. Ns = число образцов в наборе данных обучения. а = произвольный коэффициент масштабирования, как правило, 2-10. Так что это значит, если у меня есть 8 входов, 8 выходов (режим регрессии), а также обучающий набор из 37 миллионов примеров? Подключив в числах с коэффициентом масштабирования 10, более 230 тысяч скрытых нейронов и снижение, что коэффициент масштабирования будет единственной причиной, чтобы идти вверх. Конечно, это слишком много? Для уточнения, набор обучения фондового рынка Подсвечника данные, и я пытаюсь обучить сеть, чтобы предсказать, что следующая свеча может выглядеть, учитывая текущий (и, возможно, несколько предыдущих тоже). Я планирую использовать обратное распространение, который я знаю очень ресурсоемкий, поэтому, конечно, я не нужен сотни тысяч нейронов в скрытых слоях, чтобы сделать сеть эффективной, будет ли?
w0f
1

голосов
0

ответ
273

Просмотры

Путаница многие-к-одному, многие-ко-многим архитектур LSTM в Keras

Моя задача заключается в следующем: У меня есть метод (черный ящик), который вычисляет последовательность, начиная с начального элемента. На каждом шаге мой метод считывает входной сигнал от внешнего источника памяти и выводит действие, которое потенциально изменяет эту память. Вы можете думать об этом методе в качестве функции F: (внешнее состояние, чтение) -> действие. Я хочу обучить ИНС, чтобы узнать, п ​​(), что означает, что я хочу, чтобы быть в состоянии взять мою обученную модель, кормить его входной сигнал, получить предсказанное действие, использовать его, чтобы изменить внешнее состояние и повторять этот процесс до бесконечности, один шаг вовремя. Из-за природы е () Я знаю, что ИНС должна быть повторяющейся и состоянием, но я не уверен, что об остальном. Это имеет смысл тренировать его для отображения последовательности отсчетов в последовательности действий, но это имеет смысл только в случае, если модель способна плавить каждое чтение с действием, выводимым на последнем этапе, и я не уверен, как обеспечить это. Но самое главное: После тренировки моей модели с заданной длиной последовательности (чтения ^ N -> действия ^ N), как я могу сделать это выходные предсказания один шаг в (длина последовательности = 1) время? Это возможно?
1

голосов
0

ответ
231

Просмотры

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

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

голосов
1

ответ
477

Просмотры

Inputting both Word-level and Char-level embedding in LSTM for PoS tagging

Я имею в виду эту научно-исследовательской работу «Изучение Представления Character уровня для частеречной разметки», где автор говорит: «Предлагаемая нейронная сеть использует сверточный слой, который позволяет эффективное извлечение функции из слов любого размера Во время мечения. сверточный слой формирует вложения символов уровня для каждого слова, даже для тех, которые находятся за пределами словаря «. Я учусь строить эффективный Pos Tagger, используя этот подход, но я не могу представить себе формат входного сигнала. например: x_train, y_train, x_test, y_test = load_dataset () Что бы экземпляр x_train и y_train выглядеть? Я не понимаю, как я ставлю слово & обугленного вложение (которые зависят друг от друга) вместе в модели, так что он может узнать о них обоих одновременно. Я планирую поставить этот входной набор данных в модели LSTM, как следующие: М = Последовательная () M.add (Вложение ()) M.add (LSTM ()) M.add (Выпадение ()) M.add (LSTM () ) M.add (Отключения ()) M.add (TimeDistributed (Плотные ())) M.compile (убыток = 'categorical_crossentropy', оптимизатор = адам, метрика = [ 'точность']) Может кто-нибудь с опытом работы в этой области может помочь в обмене некоторых методов или идеи, чтобы поставить меня на правильном пути? Я попытался здания Pos Tagger с ручной работы функций (total_terms, срок, is_first, is_last, is_capitalized, is_all_caps, is_all_lower, приставка-1, приставка-2, приставка-3, суффикс-1, суффикс-2, суффикс-3 , prev_word, next_word), но я хочу, чтобы построить модель без них на этот раз. добавить (TimeDistributed (Плотный ())) M.compile (убыток = «categorical_crossentropy», оптимизатор = адам, метрика = [ «точность»]) Может кто-нибудь с опытом работы в этой области может помочь в обмене некоторых методов или идеи, чтобы положить меня на правильном пути? Я попытался здания Pos Tagger с ручной работы функций (total_terms, срок, is_first, is_last, is_capitalized, is_all_caps, is_all_lower, приставка-1, приставка-2, приставка-3, суффикс-1, суффикс-2, суффикс-3 , prev_word, next_word), но я хочу, чтобы построить модель без них на этот раз. добавить (TimeDistributed (Плотный ())) M.compile (убыток = «categorical_crossentropy», оптимизатор = адам, метрика = [ «точность»]) Может кто-нибудь с опытом работы в этой области может помочь в обмене некоторых методов или идеи, чтобы положить меня на правильном пути? Я попытался здания Pos Tagger с ручной работы функций (total_terms, срок, is_first, is_last, is_capitalized, is_all_caps, is_all_lower, приставка-1, приставка-2, приставка-3, суффикс-1, суффикс-2, суффикс-3 , prev_word, next_word), но я хочу, чтобы построить модель без них на этот раз.
Grimlock
1

голосов
1

ответ
965

Просмотры

Numpy.NumpyArray не имеет атрибута Read

Я пытаюсь проверить свертку нейронную сеть с изображениями, которые хранятся в папке в корневой директории проекта. У меня есть некоторый код, который дает мне ошибку и я не уверен, почему и где именно ошибка происходит из. Я буду иметь код и полный след задней ошибки: код (есть 6 JPG изображений в папке) импорт ОС для testing_image в os.listdir ( «testing_images /»): full_detector ( «testing_images /» + testing_image) полная отслеживающий ошибки ----------------------------------------------- ---------------------------- AttributeError Traceback (самый последний вызов последнего) ~ \ Anaconda3 \ envs \ deep_learning_1 \ Lib \ сайт-пакеты \ PIL \ Image.py в открытом (∥f∥p, режим) 2546 попытка: -> 2547 fp.seek (0) 2548 (кроме AttributeError, io.UnsupportedOperation): AttributeError: ' numpy.ndarray»объект не имеет атрибута„искать“Во время обработки вышеуказанного исключения, другое исключение произошло: AttributeError Traceback (самый последний вызов последнего) в () 4 импорта зева 5 для testing_image в os.listdir („testing_images /“): ----> 6 full_detector ( 'testing_images /' + testing_image) в full_detector (image_path) 3 DEF full_detector (image_path): 4 pred_image = cv2.imread (image_path) ----> 5 dog_breed = Resnet_Predict_Breed (pred_image) 6, если dog_detector (image_path): 7 печати ( «это собака с породой: {}». формат (породы)) в Resnet_Predict_Breed (IMG_PATH) 2 ### и возвращает собаку породу, которая предсказанная модель. 3 Защита Resnet_Predict_Breed (IMG_PATH): ---->
Omar Jandali
1

голосов
1

ответ
142

Просмотры

Как реализовать «И» функцию в персептроне в scikit учиться

Я новичок в машинном обучение и scikit учиться. Я пытался реализовать «и» функцию в scikit-учиться и написал небольшой код, как показано ниже: импорт панда как э.р. из панда импорта серии, DataFrame импорт NumPy как нп от sklearn.preprocessing импорта StandardScaler из sklearn.model_selection импорта train_test_split DF = DataFrame ([[0,0,0], [0,1,0], [1,0,0], [1,1,1]], столбцы = лист ( 'ABC')) Х = ДФ [[» а», 'B']] у = ДФ [ 'с'] scalar_model = StandardScaler () train_test_split = X_train, X_test, y_train, y_test = train_test_split (X, Y, test_size = 0,25, random_state = 0) scalar_model = StandardScaler () scalar_model.fit (X_train) X_train_std = scalar_model.transform (X_train) X_test_std = scalar_model.transform (X_test) от sklearn.linear_model импорта перцептрон #perceptron инициализации ППН = перцептрон (n_iter = 100, eta0 = 0,1, random_state = 0) #fit модель с стандартизированной ppn.fit данных (X_train_std, y_train) #make предикации y_pred = ppn.predict (X_test_std) от sklearn.metrics импорта accuracy_score точности = accuracy_score (y_test, y_pred) * 100 ошибка = (1-accuracy_score (y_test, y_pred)) * 100 печати ( "точность: {}%" формат (точность).) печать ( "ошибка: {}%". формат (ошибка)) После запуска кода, который я получать следующие результаты: Точность: 0,0% об ошибках: 100,0% Вот мои вопросы: почему персептрон не тренируется после 100 итераций. Я прочитал от руководства, если вес не присвоены функции, которые они будут автоматически назначены. Если я хочу, чтобы назначить веса для функций случайным образом в диапазоне от 0 до 1 Как я могу сделать это. y_train) #make предикации y_pred = ppn.predict (X_test_std) от sklearn.metrics импорта accuracy_score точности = accuracy_score (y_test, y_pred) * 100 = ошибка (1-accuracy_score (y_test, y_pred)) * 100 печати ( "Точность: {} %». формат (точность)) печать („ошибка:. {}%“формат (ошибка)) После запуска кода я получаю следующие результаты: точность: 0,0% погрешность: 100,0% Вот мои вопросы: почему это персептрон не обучение после 100 итераций. Я прочитал от руководства, если вес не присвоены функции, которые они будут автоматически назначены. Если я хочу, чтобы назначить веса для функций случайным образом в диапазоне от 0 до 1 Как я могу сделать это. y_train) #make предикации y_pred = ppn.predict (X_test_std) от sklearn.metrics импорта accuracy_score точности = accuracy_score (y_test, y_pred) * 100 = ошибка (1-accuracy_score (y_test, y_pred)) * 100 печати ( "Точность: {} %». формат (точность)) печать („ошибка:. {}%“формат (ошибка)) После запуска кода я получаю следующие результаты: точность: 0,0% погрешность: 100,0% Вот мои вопросы: почему это персептрон не обучение после 100 итераций. Я прочитал от руководства, если вес не присвоены функции, которые они будут автоматически назначены. Если я хочу, чтобы назначить веса для функций случайным образом в диапазоне от 0 до 1 Как я могу сделать это. y_pred) * 100 ошибка = (1-accuracy_score (y_test, y_pred)) * 100 печати ( "Точность: {}%" формат (точность.)) печать ( "ошибка: {}%". формат (ошибка)) После запуска код, я получаю следующие результаты: Точность: 0,0% об ошибках: 100,0% Вот мои вопросы: почему персептрон не тренируется после 100 итераций. Я прочитал от руководства, если вес не присвоены функции, которые они будут автоматически назначены. Если я хочу, чтобы назначить веса для функций случайным образом в диапазоне от 0 до 1 Как я могу сделать это. y_pred) * 100 ошибка = (1-accuracy_score (y_test, y_pred)) * 100 печати ( "Точность: {}%" формат (точность.)) печать ( "ошибка: {}%". формат (ошибка)) После запуска код, я получаю следующие результаты: Точность: 0,0% об ошибках: 100,0% Вот мои вопросы: почему персептрон не тренируется после 100 итераций. Я прочитал от руководства, если вес не присвоены функции, которые они будут автоматически назначены. Если я хочу, чтобы назначить веса для функций случайным образом в диапазоне от 0 до 1 Как я могу сделать это. Я прочитал от руководства, если вес не присвоены функции, которые они будут автоматически назначены. Если я хочу, чтобы назначить веса для функций случайным образом в диапазоне от 0 до 1 Как я могу сделать это. Я прочитал от руководства, если вес не присвоены функции, которые они будут автоматически назначены. Если я хочу, чтобы назначить веса для функций случайным образом в диапазоне от 0 до 1 Как я могу сделать это.
sjrk
1

голосов
1

ответ
255

Просмотры

Потеря не снижается вообще для RNN

Я уже пытался изменить параметры инициализации весов, скорость и размера партии и функцию активации для РЕЛ обучения все еще не уменьшение потерь это не код: импорт факел импорта torchvision.datasets как dsets импорта torchvision.transforms, как преобразующий от факела .autograd импорта переменной импорта NumPy, как нп no_time_steps = 28 input_size = 28 hidden_size = 30 output_size = 10 batch_size = 100 num_epochs = 2 learning_rate = 0.01 DTYPE = torch.DoubleTensor # MNIST Dataset train_dataset = dsets.MNIST (корень =». / данных / 'поезд = True, преобразование = transforms.ToTensor (), скачать = True) test_dataset = dsets.MNIST (корень ='. / данные /», поезд = False, преобразование = transforms.ToTensor ()) train_loader = факел.utils.data.DataLoader (набор данных = train_dataset, batch_size = batch_size, перетасовка = True) test_loader = torch.utils.data.DataLoader (набор данных = test_dataset, batch_size = batch_size, перетасовка = False) класс РНН (torch.nn.Module): защиту __init __ (я, input_size, hidden_size, output_size, batch_size): супер (РНН, самость) .__ INIT __ () self.input_size = input_size self.hidden_size = hidden_size self.output_size = output_size self.wxh = Variable (torch.randn (input_size , hidden_size) .type (DTYPE) * 0,1, requires_grad = True) self.whh = переменная (torch.randn (hidden_size, hidden_size) .type (DTYPE) * 0,1, requires_grad = True) self.why = переменная (torch.randn (hidden_size, output_size) .type (DTYPE) * 0,1, requires_grad = True) самостоятельно.с = переменным (torch.Tensor (batch_size, output_size) .Type (DTYPE) .zero _ (), requires_grad = True) self.bh = переменный (torch.Tensor (batch_size, hidden_size) .type (DTYPE) .zero_ (), requires_grad = True) self.mWxh = torch.zeros_like (self.wxh) self.mWhh = torch.zeros_like (self.whh) self.mWhy = torch.zeros_like (self.why) self.mbh = torch.zeros_like (самообеспечение. BH) self.mby = torch.zeros_like (self.by) self.dwxh, self.dwhh, self.dwhy = torch.zeros_like (self.wxh), torch.zeros_like (self.whh), torch.zeros_like (само. почему) self.dbh, self.dby = torch.zeros_like (self.bh), torch.zeros_like (self.by) Защита hidden_init (сам, batch_size): self.hidden = {} self.hidden [0] = переменный ( torch.Tensor (batch_size, hidden_size) .type (DTYPE) .zero_ ()) защиту TANH (самость, значение): возврат (torch.exp (значение) -torch.exp (-value)) / (torch.exp (значение ) + горелка.ехр (-value)) Параметр четкости (само): self.params = torch.nn.ParameterList ([torch.nn.Parameter (self.wxh.data), torch.nn.Parameter (self.whh.data), факел .nn.Parameter (self.why.data), torch.nn.Parameter (self.bh.data), torch.nn.Parameter (self.by.data)]) возвращают self.params защиту grad_data (Я): печать (self.dwxh, self.dwhy) Защита SoftMax (само, значение): возвращать torch.exp (значение) / torch.sum (torch.exp (значение)) Защита updatess (сам, Л.Р.): для пар, dparam, MEM в молнии ([self.wxh, self.whh, self.why, self.bh, self.by], [self.dwxh, self.dwhh, self.dwhy, self.dbh, self.dby], [самостоятельно. mWxh, self.mWhh, self.mWhy, self.mbh, self.mby]): mem.data + = dparam.data * dparam.data param.data + = -learning_rate * dparam.data / torch.sqrt (MEM.данные + 1e-8) Защита вперед (самостоятельно, входы, batch_size, no_time_steps, этикетка): self.hidden_init (batch_size) входы = переменное (inputs.type (DTYPE)) self.output = переменный (torch.Tensor (no_time_steps, batch_size , self.output_size) .type (DTYPE)) для т в xrange (no_time_steps): если т == 0: self.hidden [т] = torch.matmul (self.hidden [0], self.whh) #print ' время», т #, "входы", входы [:, т,:], "Масса", self.wxh #print "скрытая МАТРИЦА", входы [:, т ,:] self.hidden [т] + = горелки .matmul (входы [:, т,:], self.wxh) self.hidden [т] = self.tanh (self.hidden [т] + self.bh) #print 'время', т #, "входы" , входы [:, т,:], "Масса", самостоятельно.WxH #print "Скрытая МАТРИЦА", self.hidden [т] еще: self.hidden [т] = torch.matmul (self.hidden [т-1], self.whh) # + torch.matmul (self.hidden [ т-1], self.whh) #print 'время', т #, "входы", входы [:, т,:], "весы", self.wxh self.hidden [т] + = torch.matmul ( входы [:, т,:], self.wxh) self.hidden [т] = self.tanh (self.hidden [т] + self.bh) #print 'время', т #, "входы", входы [ :, т,:], "Масса", self.wxh #print «################################# ################################################## #########»#print "скрытая МАТРИЦА", self.hidden [т] self.output [т] = self.softmax (torch.matmul (self.hidden [т], self.why) + self.by) #print "OUTPUT MATRIX", self.output [т] Самовозврат.Выходная Защиты назад (самостоятельно, потеря, этикетки, входы): входы = переменный (inputs.type (DTYPE)) self.dhnext = torch.zeros_like (self.hidden [0]) self.dy = self.output [27]. клон () #print (self.dy.shape) self.dy [:, Int (метка [0])] = self.dy [:, Int (метка [0])] - 1 #print (self.dy. форма) self.dwhy + = torch.matmul (self.hidden [27] .t (), self.dy) self.dby + = self.dy для т в обращенных (xrange (no_time_steps)): self.dh = горелки .matmul (self.dy, self.why.t ()) + self.dhnext # backprop в час self.dhraw = (1 - self.hidden [т] * self.hidden [т]) * self.dh # backprop через TANH нелинейность self.dbh + = self.dhraw #derivative скрытого смещения self.dwxh + = torch.matmul (входы [:, т,:]. т (), self.dhraw) #derivative ввода для скрытого веса слоя self.dwhh + = torch.matmul (self.hidden [т-1] .t (), самостоятельно.dhraw) #derivative скрытого слоя к скрытой массе слоя self.dhnext = torch.matmul (self.dhraw, self.whh.t ()) = РНН РНН (input_size, hidden_size, output_size, batch_size) Защита onehot (значения, форма) : температура = torch.Tensor (форма) .zero_ () для K, J, в Перечислят (метки): температура [K] [Int (J)] = 1 возврат переменных (темп) для эпохи в диапазоне (5): для г , (изображения, метки) в Перечислим (train_loader): образы = images.view (-1, no_time_steps, input_size) выходов = РНН (изображения, batch_size, no_time_steps, этикетки) этикетки (= переменная labels.double ()) = выходы выходных [27:,:] labelss = onehot (метки, output.shape) потеря выходного #print = -torch.mul (torch.log (выход), labelss.double ()) потеря потеря #print = torch.sum (потеря ) #print (этикетки) rnn.backward (потеря, этикетки, изображения) rnn.updatess (0.01), если я == 1110:сломаться, если (I + 1)% 100 == 0: печать ( 'Epoch [% d /% d], этап [% d /% d], потери:% .4f' % (эпоха + 1, num_epochs, г + 1, длина (train_dataset) // batch_size, loss.data [0])) ВЫХОД: Эпоха [1/2], Шаг [100/600], потери: 714,8081 Эпоха [1/2], Шаг [200/600] , Loss: 692.7232 Epoch [1/2], шаг [300/600], Loss: 700.1103 Эпоха [1/2], шаг [400/600], потери: 698,5468 Epoch [1/2], шаг [500/600 ] потери: 702.1227 Epoch [1/2], шаг [600/600] потери: 705,95711227 Epoch [1/2], шаг [600/600] Потери: 705,95711227 Epoch [1/2], шаг [600/600] Потери: 705,9571
sai venkatesh
1

голосов
0

ответ
51

Просмотры

How to fit cubic equation on pybrain

I am trying to fit a Neural Network on a cubic Equation, but after many tries changing the number of the neurons on the hidden layer and increasing the number of epochs I could only get this: Could you guys help me on this? from pybrain.datasets import SupervisedDataSet from pybrain.tools.shortcuts import buildNetwork from pybrain.structure import TanhLayer from pybrain.supervised.trainers import BackpropTrainer import pandas as pd import numpy as np import matplotlib.pyplot as plt #Preparing Data dataset = pd.read_csv("C:\Users\gugub\Documents\projects\Cyrus\graph.data", header = None) darray = np.array(dataset) x = [] y = [] ds = SupervisedDataSet(1,1) #Preparing True inputs and True Outputs for i in range(43): e1 = darray[i,0] s1 = darray[i,1] x.append(e1) y.append(s1) print(x) print(y) ds = SupervisedDataSet(1,1) i = 0 for i in range(43): ds.addSample(x[i],y[i]) print(ds) net = buildNetwork(ds.indim,30,ds.outdim,recurrent=True) trainer = BackpropTrainer(net,learningrate=0.01,verbose=True) trainer.trainOnDataset(ds,20000) trainer.testOnData(verbose=True) y1 = [] i = 0 for i in x: y1.append(net.activate(i)) plt.plot(x,y,'r') plt.plot(x,y1,'b') plt.show() while True: e2 = int(raw_input(">")) s2 = [e2] print(net.activate(s2)) P.S The red line on the graph is what it should be and the blue one is the function generated by my network
Gustavo Braga
1

голосов
1

ответ
48

Просмотры

Искусственный симулятор жизни не производит никаких результатов

Я экспериментировал с меняющимся искусственными существами, но до сих пор все существа просто умирают. Для инициализации существ, которые не являются результатом бесполого размножения; Я создаю около 8 случайных нейронов, которые оба имеют связь в и подключение выхода. Я использую мутацию, чтобы получить набор весов, которые используются в небольшой нейронной сети, которая может формировать текущие соединения. У меня есть 15 входов и 5 выход. Существует макс число 25 нейронов в скрытом слое. Мутация шанс 25%. Различные мутации добавить соединение, отключить соединение, сделать небольшое изменение веса, добавьте нейрон, а также отключить нейрон. Есть ли что-то прочь с моей мутацией шансы?
Sam
1

голосов
1

ответ
101

Просмотры

Neural networks - why everybody has different approach with XOR

Currently I'm trying to learn how to work with neural networks by reading books, but mostly internet tutorials. I often see that "XOR is 'Hello World' of neural networks". But here is a thing: The author of one tutorial says that for neural network that calculates XOR value we should use 1 hidden layer with 2 neurons. Also he uses backpropagation with deltas to adjust weights. I implemented this, but even after 1 million epochs I have a problem that network is stuck with input data 1 and 1. There should be "0" as an answer, but answer is usually 0.5something. I checked my code, it is correct. If I'll try to add just 1 more neuron in the hidden layer, network is successfully calculating XOR after ~50 000 epochs. At the same time some people saying that "XOR is not a trivial task and we should use network with 2-3 or more layers". Why? Come on, if XOR creates so much problems, maybe we shouldn't use it as 'hello world' of neural networks? Please explain what is going on.
user64675
1

голосов
0

ответ
302

Просмотры

Что делает (слишком большой) нейронной сети расходятся?

Я построить нейронную сеть (NN), имеющую только 6 входов и 8 классов (это, таким образом, классификатор я строй). Чтобы дать немного больше фона: Количество обучающих выборок 80000 образцов как размер набора DEV / кросс-валидации (я знаю, что это не очень хороший раскол, но сравнивать мои выходы с теми, моим коллегой, я должен держать поезд / DEV устанавливает как есть). Функции ввода следующие относительно хорошо определенные функции плотности вероятности, хотя и не гауссовые. В связи с большим количеством входов по отношению к числу функций, набор данных «практически невозможно», чтобы overfit, и я до сих пор не удалось это сделать (даже с очень большими сетями). Это интуитивно правильно, так как функция PDF в накладываются друг на друга и достаточно плотной, чтобы предотвратить изгиб петли, чтобы собрать больше и больше образцов. Сейчас, так как я хотел, чтобы проверить пределы алго и тем самым также мой NN, я провел недельную методом Монте-Карло сессии изменяющуюся все параметры, включая число слоев и число узлов в слое как гиперпараметров. Я заметил, что во многих случаях (когда количество слоев и узлов в слое достаточно велики) Н.Н. сходится по прошествии некоторого времени (скажем 300+ interations), то уровни, но после нескольких сотен итераций больше, он начинает расходиться и становятся нестабильными (не гладкие и показывая большие скачки). Я знаю, что из основной теории Н.Н., что для случая я описываю (6 входов, 8 классов) один скрытый слой с около 10 узлов должны быть достаточно (и это делает, кстати), но я бы ожидать NN иметь больше слоев и имеющие более узлов на один слой, по крайней мере, не расходятся и оставаться приблизительно вокруг минимума. Особенно, так как, когда градиент равен нулю, то размер шага должен стать нулевым, по определению, так? или я что-то отсутствует? Теперь мой вопрос имеет два аспекта: Есть ли какая-то теория о том, как можно предсказать, когда NN будет расходиться? Так как я собираюсь попробовать свои силы на проблему более подходящей для решения с помощью (сверточного) NN, я хотел бы, по крайней мере иметь некоторое представление в этом вопросе. Как это возможно, что NN расходится? Обратите внимание, что в связи с тем, что я использовал градиент проверки, чтобы проверить мой backprop и тот факт, что небольшой NNS не расходиться, у меня есть уверенность в моей NN (хотя я использовать только Numpy / питон и без автоматического-backprop рамки как Keras / TensorFlow). 2.1 У меня есть ощущение, что это является численная реализация штуковина, однако, даже в этом случае, как бы я быть в состоянии предотвратить это? Любая информация, советы, рекомендации будут высоко оценены. 2. 2 мой случай довольно сильно отличается от большинства (компьютерного зрения) случаях (кошки классификаторов и такие), и таким образом небольшого числа функций / входов, вероятно, является фактором, тоже. В компьютерных сетях видения, число особенностей является способом выше, чем число узлов, очень много в отличии от моего простого случая. С наилучшими пожеланиями и спасибо заранее за любую обратную связь. Мой оптимизатор оптимизация ADAM, который я реализовал в NumPy: Защиту update_with_adam (W, б, Dw, дБ, v_dW, v_db, s_dW, s_db, альфа, Истэп, beta_v = 0,9, beta_s = 0,999): ""»Update параметры с помощью оптимизации ADAM ""»EPS = 1e-8 nof_layers = Len (Вт) для л в диапазоне (1, nof_layers):
furk
1

голосов
1

ответ
233

Просмотры

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

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

голосов
1

ответ
206

Просмотры

How to use tf.while_loop for nested FOR loop

Я работаю над моделью, которую я реализованной с использованием tensorflow. Все шло хорошо, пока я не должен был осуществить вложенную функцию (что-то подобное), используя вложенный цикл. Например, то, как показано ниже: для к в диапазоне (п): Ск = tf.convert_to_tensor (G [K], DTYPE = self.dtype) Ск = tf.tile (tf.expand_dims (Gk, 0), [tf.shape (Truex) [0], 1]) для J в диапазоне (м): pre_Y = self.build_nn (Ск, 200, «{} phi2'.format (к), tf.AUTO_REUSE) log_pred_Y = tf.layers.dense (pre_Y, 2, имя = '{} phi2y'.format (к), повторное использование = tf.AUTO_REUSE) pred_Y = tf.exp (log_pred_Y) ........... pre_cost + = tf.multiply ( Л.Л., pred_Y) _cost + = tf.reduce_sum (tf.multiply (pre_cost, pre_G), -1), очевидно, очень плохая идея, поскольку это не только занимает много времени, но потребляет огромный кусок памяти. В течение нескольких дней я ве пытался переопределять с помощью tf.while_loop, как я понимаю, должно быть лучше, чем при использовании родного цикла питона. Я пытался осуществить вложенную tf.while_loop, но все безрезультатно. У меня 2 вопроса: Действительно ли это хорошая идея использовать вложенную tf.while_loop? (Т.е. есть tf.while_loop внутри другого, чтобы захватить вычисление вложенного цикла FOR). Если нет, можно ли захватить вычисление вложенного цикла FOR с использованием tf.while_loop? Как можно использовать tf.while_loop, когда вам нужно использовать различные плотные слои в каждом цикле? например, в моем случае, у меня есть: pre_Y = self.build_nn (Gk, 200, '{} phi2'.format (к), tf.AUTO_REUSE) log_pred_Y = tf.layers.dense (pre_Y, 2, имя =' {} phi2y ».format (J), повторное использование = tf.AUTO_REUSE), который использует индекс в названии, чтобы определить, какие из слоев, чтобы использовать в каждом цикле.
uchman21
1

голосов
0

ответ
86

Просмотры

Является ли это оптимальным для заполнения недостающих значений нулей в моделях нейронных сетей?

Мой вопрос специально для моделей нейронных сетей и для замещения некоторого определенного значения (не имею в виду, медиана или предсказания на основе вменения): Если набор данных содержит аннулирует / Nans, является оптимальным вменения число 0 (ноль)? Или это должно быть какой-то другой номер (например, -999, например), который уже не содержится в наборе данных? Или это не будет иметь никакого значения, в конце концов? Я спрашиваю, потому что я думаю, что если мы заполняем со значением, которое уже существует в наших данных это как стирают информацию, содержащуюся в этой переменной. Я что-то пропустил?
1

голосов
0

ответ
1.2k

Просмотры

Инициализация и использование tf.placeholder (tf.string), подавая ему значение и преобразования его обратно в строку, когда это необходимо

У меня возникли проблемы с внедрением модели в tensorflow. Я хочу, чтобы запрограммировать модель, которая предсказывает полярность настроений. Для этого я сначала должен подготовить модель. Здесь возникает ошибка. Я использую три переменные: предложения (или настроение), цель (слово в предложении, на котором применяется полярность) и сама полярность. Первые две переменные являются строками, а полярность является вектором ([1,0,0], когда положительный, [0,0,1], когда отрицательный). Для того, чтобы эти переменные, которые я использую tf.placeholder (tf.string). Когда я бег модели я получаю следующее сообщение об ошибке: «Вы должны кормить значение для тензора заполнителя„PLACEHOLDER_1“с DTYPE строкой» Я также думаю, что у меня есть проблема, когда я хочу делать операции по переменному предложению: мне нужно, чтобы расколоть приговор в его словах, но так как предложение является заполнителем, Я сначала преобразовать его обратно в строку. Вход модели являются три вектора: Швец (вектор всех предложений как строки), tVec (вектор всех целей в виде строк) и pVec (вектор всех полярностей в качестве векторов) я имел дело с этой ошибкой для достаточно некоторое время, так что любая помощь приветствуется. Ниже вы найдете код. Заранее спасибо. Полярность = tf.placeholder (tf.float32, форма = [1, c_cardi]) # этикетка предложение = tf.placeholder (tf.string) #inputdata мишень = tf.placeholder (tf.string) Защита multilayer_perceptron (MI, цели, вес , уклоны): # Этот метод работает правильно DEF Modela (предложение, цель): # ошибка может относиться к этому: sess2 = tf.Session () предложение = sess2.run (предложение) # Мне нужно получить значение тензора здесь sess2.close () слова = sentence.split () # Код продолжается, никакой ошибки здесь не возвращает предсказание Защиты trainModelA (Швец, tVec, pVec): Предсказание = Modela (предложение, целевой) cost_function = tf.reduce_mean (tf.nn.softmax_cross_entropy_with_logits (логит-анализ = предсказание, этикетки = полярность)) Оптимизатор = tf.train. GradientDescentOptimizer (0.01) .minimize (cost_function) с tf.Session (), как Sess: sess.run (tf.global_variables_initializer ()) для эпохи в диапазоне (эпох): # ошибка может относиться к этой части sess.run (оптимизатор, feed_dict = {предложение: Швец, цель: tVec, полярность: pVec}) # Код идет на trainModelA (Швец, tVec, pVec) EDIT: мне кажется, что ошибка происходит на линии: предложение = sess2.run (предложение) , Потому что я бегу Modela (предложение, цель), у меня есть предложение в качестве входных данных, но это еще не заполнено значением. Тем не мение,
jv3768
1

голосов
2

ответ
1.3k

Просмотры

InvalidArgumentError: Вы должны кормить значение для тензора заполнителя «PLACEHOLDER_1»

Я тренировался простую нейронную сеть с TensorFlow на MNIST данных. Обучение часть кода работает отлично. Тем не менее, когда я кормлю одно изображение в сети, он дает мне следующую отслеживающий: Traceback (самый последний вызов последнего): Файл «/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site- пакеты / tensorflow / питон / клиент / session.py "строка 1021, в _do_call возврата п (* арг) Файл" /Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/tensorflow /python/client/session.py», строка 1003, в _run_fn состоянии, run_metadata) Файл "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/contextlib.py", строка 88, в __exit__ следующий (self.gen) Файл «/Library/Frameworks/Python.framework/Versions/3.6/lib/python3. транспонировать (InP) изображение = np.expand_dims (ая, ось = 0) # формы: (1, 784) #feed изображения в сессию с tf.Session () как Sess: feed_dict = {х: изображения} классификаций = Sess .run (у, feed_dict) печать (классификация) Любая помощь будет признателен! Я новичок в TensorFlow.
codemonkey
1

голосов
0

ответ
328

Просмотры

Tensorflow ошибка распределения памяти: тензор Dst не инициализируется - много памяти на GPU,

Когда я начинаю подготовку к упреждению 2 слоя ИНСА с GPU на новом кластере с использованием tensorflow, я поздоровался тензором Dst не инициализирована ошибка. Эта ошибка, по-видимому, когда не хватает памяти для обработки размер пакета, однако ошибка указывает, что Распределитель выбежала из памяти при попытке выделить 315.8KiB ... это не должно быть достаточно, чтобы вызвать ошибку памяти нет другого процессы коробления памяти на GPU, ... Во-первых, NVIDIA-SMI показывает, что нет никаких проблем с памятью или другие процессы, использующие всю память на моем кластере: ср апр 11 10:22:49 2018 + ----------- -------------------------------------------------- ---------------- + | NVIDIA-SMI версии 384,90 Driver: 384. 90 | | ------------------------------- + ----------------- ----- + ---------------------- + | GPU Имя Постоянство-M | Bus-Id Disp.A | Летучие Uncorr. ECC | | Вентилятор Temp Перф Pwr: Использование / Cap | Память-Usage | GPU-Util Compute М. | | =============================== + ================= ===== + ====================== | | 0 GeForce GTX ТИТ ... Off | 00000000: 05: 00,0 On | N / A | | 22% 51C P8 17W / 250W | 65MiB / 12204MiB | 0% По умолчанию | + ------------------------------- + ----------------- ----- + ---------------------- + | 1 GeForce GTX ТИТ ... Off | 00000000: 06: 00,0 Off | N / A | | 22% 49C P8 16W / 250W | 12MiB / 12207MiB | 0% По умолчанию | + ------------------------------- + ----------------- ----- + ---------------------- + | 2 GeForce GTX ТИТ ... Off | 00000000: 09: 00,0 Off | N / A | | 22% 48C P8 16W / 250W | 12MiB / 12207MiB | 0% По умолчанию | + ------------------------------- + ----------------- ----- + ---------------------- + | 3 GeForce GTX ТИТ ... Off | 00000000: 0A: 00,0 Off | N / A | | 22% 39C P8 16W / 250W | 12MiB / 12207MiB | 0% По умолчанию | + ------------------------------- + ----------------- ----- + ---------------------- + -------------------- -------------------------------------------------- ------- + | Процессы: GPU памяти | | GPU PID имя Тип процесса использования | | ================================================= ============================ | | 0 2120 G / USR / bin / X 53MiB | + ------------------------------------------------- ---------------------------- + Traceback ниже: W tensorflow / ядро ​​/ common_runtime / bfc_allocator.cc: 274] ***** ************************************************** xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx W tensorflow / ядро ​​/ common_runtime / bfc_allocator.cc: 275] Выбежал из памяти пытается выделить 315.8KiB. См журналов для состояния памяти. W tensorflow / ядро ​​/ рамки / op_kernel.cc: 983] Внутренний: Тензор Dst не инициализирован. E tensorflow / ядро ​​/ common_runtime / executor.cc: 594] Исполнитель не удалось создать ядро. Внутренний: тензор Dst не инициализирован. [[Node: zeros_2 = Const [DTYPE = DT_FLOAT, значение = Tensor, _device = "/ работа: локальный / реплика: 0 / задача: 0 / GPU: 0"] ()]] Traceback (самый последний вызов последнего): Файл "/usr/lib/python2.7/runpy.py", строка 162, в _run_module_as_main "__main__", Fname, погрузчик, pkg_name) Файл "/usr/lib/python2.7/runpy.py", строка 72, в _run_code код Exec в run_globals Файл "/raid/home/vbalupuri/GDClassifier/scripts/workbench.py", строка 52, в batch_size = 0,5 файла "/raid/home/vbalupuri/GDClassifier/scripts/workbench.py", строка 15 , в train_classifier MLP = ann.Trainer (ann.TwoLayerAnn (dr.xdim [0], dr.ydim [0], 0,1)) Файл "gd_classifier / ANN / train.py", строка 14, в __init__ self.sess. работать (я. INIT) Файл "/usr/local/lib/python2.7/dist-packages/tensorflow/python/client/session.py", строка 767, в перспективе run_metadata_ptr) Файл «/usr/local/lib/python2.7/ Расс-пакеты / tensorflow / питон / клиент / session.py "строка 965, в _run feed_dict_string, опции, run_metadata) Файл" /usr/local/lib/python2.7/dist-packages/tensorflow/python/client/session .py», линия 1015, в _do_run target_list, опции run_metadata) Файл "/usr/local/lib/python2.7/dist-packages/tensorflow/python/client/session.py", строка 1035, в _do_call типа повышают (е) (node_def, оп, сообщение) tensorflow.python.framework.errors_impl.InternalError: тензор Dst не инициализирован. [[Node: zeros_2 = Const [DTYPE = DT_FLOAT, значение = Tensor, _device = "/ работа: локальный / реплика: 0 / задача: 0 / GPU: 0" ] ()]] InternalError (смотри выше TRACEBACK): тензор Dst не инициализируется. [[Узел: zeros_2 = Const [DTYPE = DT_FLOAT, значение = Тензорная, _device = "/ работа: локальный / реплика: 0 / задача: 0 / GPU: 0"] ()]]
Varun Balupuri
1

голосов
0

ответ
39

Просмотры

Понимание распределения глубокого изучения с tensorflow

Я написал РНН с tensorflow что поезда на некоторых временных рядов данных. Я готовлю модель на перемещение окна, принимая в 2 временных срезов и предсказывающий для третьего. Я партия мои входы и этикетка и запустить весь набор пакетов более 30 эпох. Модель прекрасно работает как приложение одного TF. Теперь я с нетерпением, чтобы созреть мой подход и распределить вычисления. У меня эта работа, используя DataSet для дозирования и MonitoredTrainingSession. Мой кластер состоит из одного пса и двух рабочих. Я заметил, что распределенное обучение было гораздо медленнее, чем на одной машине. Я связываю это вниз к сети (без каких-либо научных измерений), однако я также обеспокоен тем, что я, возможно, неправильно настроенный - и моя распределенная модель не ведет себя таким же образом, как содержащийся процесс одного самостоятельного. Я представил локальную копию входных данных для каждого работника и выход (сюжет) отличается от каждого работника. Я чувствую, что данные должны быть загружены в пс, а и распространяется на рабочих? Таким образом, он будет разделить данные поровну между рабочими? Это правильный подход? Тем не менее, делает это, то сломать способность РНН к обучению на последовательных данных, когда каждый работник не видит всю картину? Редактировать При ближайшем рассмотрении, имеет ли пс собирать отдельные градиенты от каждого работника и обновлять их все о прогрессе друг друга, так что каждый из них знают друг друга? делает это, то сломать способность РНН к обучению на последовательных данных, когда каждый работник не видит всю картину? Редактировать При ближайшем рассмотрении, имеет ли пс собирать отдельные градиенты от каждого работника и обновлять их все о прогрессе друг друга, так что каждый из них знают друг друга? делает это, то сломать способность РНН к обучению на последовательных данных, когда каждый работник не видит всю картину? Редактировать При ближайшем рассмотрении, имеет ли пс собирать отдельные градиенты от каждого работника и обновлять их все о прогрессе друг друга, так что каждый из них знают друг друга?
clicky
1

голосов
1

ответ
358

Просмотры

Поток уложены выход РНН в полностью подключенного слоя

Я пытаюсь решить проблему регрессии с сложенными RNN в tensorflow. Выход РНН должен быть подан в полностью подключенный слой для окончательного предсказания. В настоящее время я struggeling о том, как кормить выход РНН в конечный fully_connected слой. Мой вход формы [batch_size, max_sequence_length, num_features] Слои РНН созданы следующим образом: клетки = [] для г в диапазоне (num_rnn_layers): клетка = tf.contrib.rnn.LSTMCell (num_rnn_units) cells.append (клетка) multi_rnn_cell = tf.contrib.rnn.MultiRNNCell (клетка) выходы, состояние = tf.nn.dynamic_rnn (ячейка = multi_rnn_cell, входы = Bx_rnn, DTYPE = tf.float32) выходы имеет форму [batch_size, max_sequence_length, num_rnn_units] Я попытался с помощью только выход последнего шага по времени, как это: final_outputs = tf.contrib.layers.fully_connected (выходы [:, - 1 ,:], n_targets, activation_fn = нет) Я также нашел примеры и книги рекомендуют, чтобы изменить выход и целевой как это: rnn_outputs = tf.reshape (выходы, [-1, num_rnn_units]) y_reshaped = tf.reshape (у, [-1]) Так как я в настоящее время использую размер пакета 500 и длину последовательности 10000 это приводит к огромным матрицам, очень долгие времена обучения и огромное потребление памяти. Я также нашел много статей, рекомендуя Расшахтовочная входы и выходы снова штабелирования, которые я не мог работать из-за формы несовпадений. Что было бы правильным способом кормить выход РНН в fully_connected слой? Или я должен использовать состояние РНН над выходами? Edit: Для Разъяснения: Я нужны эти длинные последовательности, потому что я пытаюсь моделировать физическую систему. Ввода является одной особенностью, состоящий из белого шума. У меня есть несколько выходов (в этой конкретной системе 45). Импульсы эффект состояние системы для круглого около 10.000 шагов по времени. т.е. в настоящее время я пытаюсь моделировать автомобили передач мостиков, который был анимированный с помощью вибратора. Выходы были измерены с помощью 15 датчиков ускорения в 3-х направлениях (X, Y и Z). Объем партии 500 произвольно выбрали. Независимо от того, вероятно, исчезающей градиенты или потенциальные проблемы с памятью длинными последовательностями, я был бы заинтересован в том, как правильно кормить данных. У нас есть соответствующее оборудование (например, Nvidia Titan V). Кроме того, мы уже были в состоянии смоделировать поведение системы по классическому DNN с лагами> 3000 шагов по времени с хорошей точностью. Выходы были измерены с помощью 15 датчиков ускорения в 3-х направлениях (X, Y и Z). Объем партии 500 произвольно выбрали. Независимо от того, вероятно, исчезающей градиенты или потенциальные проблемы с памятью длинными последовательностями, я был бы заинтересован в том, как правильно кормить данных. У нас есть соответствующее оборудование (например, Nvidia Titan V). Кроме того, мы уже были в состоянии смоделировать поведение системы по классическому DNN с лагами> 3000 шагов по времени с хорошей точностью. Выходы были измерены с помощью 15 датчиков ускорения в 3-х направлениях (X, Y и Z). Объем партии 500 произвольно выбрали. Независимо от того, вероятно, исчезающей градиенты или потенциальные проблемы с памятью длинными последовательностями, я был бы заинтересован в том, как правильно кормить данных. У нас есть соответствующее оборудование (например, Nvidia Titan V). Кроме того, мы уже были в состоянии смоделировать поведение системы по классическому DNN с лагами> 3000 шагов по времени с хорошей точностью.
Nico Lindmeyer
1

голосов
2

ответ
174

Просмотры

Можно ли загружать вес с определенным количеством или с initalizer в NN в keras в model.add?

Можно ли загружать вес в NN в keras в model.add? Я хочу, чтобы загрузить вес, основанный на Ксавьере или другие инициализаторы. Как я могу это сделать в keras? Например, вес = [w1, w2, w3, w4], как мы могли бы сделать это в keras? Например, в TF мы имеем: инициализатор = tf.contrib.layers.xavier_initializer ()
fila
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
1

голосов
1

ответ
833

Просмотры

Keras модель выплескивается неизвестную ошибку | (IndexError: Индекс списка вне диапазона)

Я создаю модель дискриминатора CNN для проверки аудио для гана. Он принимает тензор выхода генератора части ган. Но по какой-то причине, я получаю эту ошибку странной, которая даже не указать номер строки, при использовании скомпилированных моделей с аудио тензора от генератора. Код: Защита build_audio_discriminator (audio_shape, num_classes): модель = Последовательная () model.add (Conv1D (32, kernel_size = (2), обивка = "одинаковый", input_shape = audio_shape)) model.add (MaxPooling1D (pool_size = (2 ))) model.add (Выпадение (0.25)) model.add (Плотные (128, активация = 'Relu')) model.add (Выпадение (0.25)) model.add (Плотные (128)) model.summary () audio_shape_ = (нет,
MrGrimod

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

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