Нан в сводной гистограмме для: deconv2/biases
Исходный размер моих изображений составляет 3900 x 6000 x 3. Я делаю накладывающиеся участки формы (232024, 28, 28, 3), а затем делаю партии размером 1000. У меня есть модель CNN для семантической сегментации следующим образом:
def conv_layer(inputs, filters, kernel_size, strides = 1, padding = "SAME", bias_constant = 0.0, name = "conv"):
with tf.name_scope(name):
input_shape = inputs.shape.as_list()
filter_tensor = tf.truncated_normal([kernel_size[0], kernel_size[1], input_shape[3], filters], dtype = tf.float32)
filter = tf.Variable(initial_value = filter_tensor, trainable = True, name = "kernel")
bias = tf.Variable(tf.constant(bias_constant, shape=[filters]), name="bias")
conv2d = tf.nn.conv2d(input = tf.cast(inputs, dtype = tf.float32), filter = filter, strides = [1, strides, strides, 1], padding = padding)
activation = tf.nn.relu(conv2d + bias)
tf.summary.histogram("weights", filter)
tf.summary.histogram("biases", bias)
tf.summary.histogram("activations", activation)
return tf.cast(activation, dtype = tf.float16)
def deconv_layer(inputs, filters, kernel_size, output_size, strides = 1, padding = "SAME", bias_constant = 0.0, name = "deconv"):
with tf.name_scope(name):
input_shape = inputs.shape.as_list()
deconv_shape = tf.stack([tf.shape(inputs)[0], output_size[0], output_size[1],filters])
filter_tensor = tf.truncated_normal([kernel_size[0], kernel_size[1], filters, input_shape[3]], dtype = tf.float32)
filter = tf.Variable(initial_value = filter_tensor, trainable = True, name = "kernel")
bias = tf.Variable(tf.constant(bias_constant, shape=[filters]), name="bias")
print("bias:")
print(bias)
conv2d_transpose = tf.nn.conv2d_transpose(value = tf.cast(inputs, dtype = tf.float32),
filter = filter,
strides = [1, strides, strides, 1],
output_shape=deconv_shape,
padding = padding)
activation = tf.nn.relu(conv2d_transpose + bias)
tf.summary.histogram("weights", filter)
tf.summary.histogram("biases", bias)
tf.summary.histogram("activations", activation)
return tf.cast(activation, dtype = tf.float16)
def semantic_seg_model(features, mode, batch_size):
bias_constant = 0.1
conv_filters = [20, 50, 90]
conv_sizes = []
tf.summary.image('input', features, batch_size)
"""Model function for CNN."""
# Encoding starts here.
# Convolutional Layer 1
# Input: 100 x 100
conv = conv_layer(inputs=features,
filters=conv_filters[0],
kernel_size=[5, 5],
bias_constant = bias_constant,
name = "conv1")
conv_sizes.append(conv.shape.as_list())
print(conv.shape)
# Convolutional Layer 2
# Input: 100 x 100
conv = conv_layer(inputs = conv,
filters = conv_filters[1],
kernel_size = [5, 5],
strides = 2,
bias_constant = bias_constant,
name = "conv2")
conv_sizes.append(conv.shape.as_list())
print(conv.shape)
# Convolutional Layer 3
# Input: 100 x 100
conv = conv_layer(inputs = conv,
filters = conv_filters[2],
kernel_size = [5, 5],
bias_constant = bias_constant,
strides = 2,
name = "conv3")
conv_sizes.append(conv.shape.as_list())
print(conv.shape)
# Deconvolution Layer 3
# Input: 100 x 100
deconv = deconv_layer(inputs = conv,
filters = conv_filters[1],
kernel_size = [5, 5],
bias_constant = bias_constant,
strides = 2,
output_size = [conv_sizes[1][1], conv_sizes[1][2]],
name = "deconv3")
print(deconv.shape)
# Deconvolution Layer 2
# Input: 100 x 100
deconv = deconv_layer(inputs = deconv,
filters = conv_filters[0],
kernel_size = [5, 5],
bias_constant = bias_constant,
strides = 2,
output_size = [conv_sizes[0][1], conv_sizes[0][2]],
name = "deconv2")
print(deconv.shape)
deconv = deconv_layer(inputs = deconv,
filters = 3,
kernel_size = [5, 5],
output_size = [features.shape.as_list()[1], features.shape.as_list()[2]],
bias_constant = bias_constant,
name = "deconv1")
print(deconv.shape)
return deconv
epochs = 1000
learning_rate = 1e-50
image, label = tf.train.slice_input_producer([features, labels], shuffle = False)
BATCH_SIZE = 1000
THREAD_NUM = 5
MIN_AFTER_DEQUEUE = 10000
queue_capacity = MIN_AFTER_DEQUEUE + THREAD_NUM * BATCH_SIZE
image_batch, label_batch = tf.train.batch(tensors = [image, label],
batch_size = BATCH_SIZE,
capacity = queue_capacity,
num_threads = THREAD_NUM,
allow_smaller_final_batch = True)
output = semantic_seg_model(image_batch, tf.estimator.ModeKeys.TRAIN, BATCH_SIZE)
#cost
with tf.name_scope("cross_entropy"):
cross_entropy = tf.nn.softmax_cross_entropy_with_logits(logits = output, labels = label_batch)
cost = tf.reduce_mean( cross_entropy )
# return cost, optimizer, accr
tf.summary.scalar("xent", cost)
#optimizer
with tf.name_scope("optimizer"):
optimizer = tf.train.AdamOptimizer(learning_rate = learning_rate).minimize(cost)
# Accuracy
with tf.name_scope("accuracy"):
correct_prediction = tf.equal(tf.argmax(label_batch, 1), tf.argmax(output, 1))
accr = tf.reduce_mean(tf.cast(correct_prediction, tf.float16))
tf.summary.scalar("accuracy", accr)
merged_summary = tf.summary.merge_all()
# Session configs
config = tf.ConfigProto()
config.log_device_placement = True
config.gpu_options.allow_growth = True
# config.gpu_options.per_process_gpu_memory_fraction=0.8
# Initialize session
sess = tf.Session(config=config)
sess.run(tf.global_variables_initializer())
coord = tf.train.Coordinator()
enqueue_threads = tf.train.start_queue_runners(sess = sess, coord = coord)
try:
for epoch in range(epochs):
if coord.should_stop():
break
epoch_loss = 0
train_loss = []; train_accuracy = []
s = sess.run(merged_summary)
writer.add_summary(s, epoch)
for batch in range(math.ceil(features.shape.as_list()[0]/BATCH_SIZE)):
_, sess_cost, sess_accuracy = sess.run([optimizer, cost, accr])
train_loss.append(sess_cost)
train_accuracy.append(sess_accuracy)
train_loss = np.mean(train_loss)
train_accuracy = np.mean(train_accuracy)
saver.save(sess, "./semantic_seg_model_1", global_step=epoch)
print ("[%02d/%02d] trainLoss: %.4f trainAcc: %.2f"
% (epoch + 1, epochs, sess_cost, sess_accuracy))
except Exception as e:
# Report exceptions to the coordinator.
coord.request_stop(e)
finally:
# Terminate as usual. It is safe to call `coord.request_stop()` twice.
coord.request_stop()
coord.join(enqueue_threads)
sess.close()
Я получаю ошибку, когда начинаю тренировку. Ошибка заключается в следующем:
[01/1000] trainLoss: 0.0000 trainAcc: 1.00
ИНФОРМАЦИЯ: тензор потока: ошибка сообщена Координатору: Нан в сводной гистограмме для: deconv2/biases [[Узел: deconv2/biases = HistogramSummary[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"](deconv2/biases/tag, deconv2/bias/read/_105)]] [[Узел: batch/fifo_queue_Size/_91 = _Recvclient_terminated=false, recv_device="/job:localhost/replica:0/task:0/ устройство:GPU:0", send_device="/job:localhost/replica:0/task:0/device:CPU:0", send_device_incarnation=1, тензор_имя ="edge_37_batch/fifo_queue_Size", тензор_типа =DT_INT32, _device="/ работа: локальный / реплика: 0 / задача: 0 / устройства:GPU:0"]]
Вызывается операцией 'deconv2/biases', определенной в: файле "c:\users\fawad khalil\appdata\local\ Programs\python\python36\lib\runpy.py", строка 193, в _run_module_as_main "main", mod_spec) Файл "c:\users\fawad khalil\appdata\local\ Programs\python\python36\lib\runpy.py", строка 85, в файле _run_code exec(code, run_globals) Файл "c: \ users \ fawad khalil \ appdata \" local \ Programs\python\python36\lib\site-packages\ipykernel_launcher.py", строка 16, в файле app.launch_new_instance()" c: \ users \ fawad khalil \ appdata \ local \ Programs\python\python36\lib\site-packages\traitlets\config\application.py", строка 658, в файле launch_instance app.start()" c: \ users \ fawad khalil \ appdata \ local \ Programs\python\python36\lib\site-packages\ipykernel\kernelapp.py", строка 478, в начале файла self.io_loop.start()." c: \ users \ fawad khalil \ appdata \ local \ Programs\python\python36\lib\site-packages\zmq\eventloop\ioloop.py", строка 177, в начале super(ZMQIOLoop, self).start() Файл" c: \ users \ fawad khalil \ appdata \ local \ Programs\python\python36\lib\site-packages\tornado\ioloop.py", строка 888, в стартовом файле handler_func(fd_obj, events) Файл" c: \ users \ fawad khalil \ appdata \ local \ Programs\python\python36\lib\site-packages\tornado\stack_context.py", строка 277, в null_wrapper возвращает fn(*args, **kwargs) Файл" c: \ users \ fawad khalil \ appdata \ local \ Programs\python\python36\lib\site-packages\zmq\eventloop\zmqstream.py", строка 440, в файле _handle_events self._handle_recv()" c: \ users \ fawad khalil \ appdata \ local \ Programs \ python \ python36 \ lib \ site-packages \ zmq \ eventloop \ zmqstream.py ", строка 472, в _handle_recv self._run_callback(обратный вызов, msg) файл "c:\users\fawad khalil\appdata\local\ Programs \ python \ python36 \ lib \ site-packages \ zmq \ eventloop \ zmqstream.py", строка 414, в _run_callback callback(*args, **kwargs) Файл "c:\users\fawad khalil\appdata\local\ Programs \ python \ python36 \ lib \ site-packages \ tornado \ stack_context.py", строка 277, в null_wrapper возвращает fn(*args, **kwargs) Файл "c:\users\fawad khalil\appdata\local\ Programs\python\python36\lib\site-packages\ipykernel\kernelbase.py", строка 281, в диспетчере возвращает self.dispatch_shell(stream, msg) Файл" c: \ users \ fawad khalil \ appdata \ local \ Programs \ python \ python36 \ lib \ site-packages \ ipykernel \ kernelbase ".py ", строка 232, в обработчике dispatch_shell (stream, idents, msg) Файл" c: \ users \ fawad khalil \ appdata \ local \ Programs \ python \ python36 \ lib \ site-packages \ ipykernel \ kernelbase.py ", строка 397, в execute_request user_expressions, allow_stdin) Файл "c:\users\fawad khalil\appdata\local\ Programs\python\python36\lib\site-packages\ipykernel\ipkernel.py", строка 208, в do_execute res = shell.run_cell(code, store_history=store_history, silent=silent) Файл "c:\users\fawad khalil\appdata\local\ Programs\python\python36\lib\site-packages\ipykernel\zmqshell.py", строка 533, в run_cell возвращает super(ZMQInteractiveShell, self).run_cell(*args, **kwargs) Файл "c:\users\fawad khalil\appdata\local\ Programs\python\python36\lib\site-packages\IPython\core\interactiveshell.py", строка 2728, в run_cell интерактивность = интерактивность, ком piler= компилятор, результат = результат) Файл "c:\users\fawad khalil\appdata\local\ Programs \ python \ python36 \ lib \ site-packages \ IPython \ core \ interactiveshell.py", строка 2850, в run_ast_nodes, если self.run_code(code, result): файл "c:\users\fawad khalil\appdata\local\ Programs \ python \ python36 \ lib \ site-packages \ IPython \ core \ interactiveshell.py", строка 2910, в исполняемом коде exec(code_obj, self.user_global_ns, self.user_ns) Файл "", строка 1, в output = semantic_seg_model(image_batch, tf.estimator.ModeKeys.TRAIN, BATCH_SIZE) Файл "", строка 107, в файле semantic_seg_model name = "deconv2") "", строка 78, в файле deconv_layer tf.summary.histogram("уклоны", смещение) Файл "c:\users\fawad khalil\appdata\local\ Programs \ python \ python36 \ lib \ site-packages \ensorflow\python\" summary\summary.py", строка 192, в теге гистограммы = тег, значения = значения, имя = область действия) Файл" c: \ users \ fawad khalil \ appdata \ local \ Programs\python\python36\lib\site-packages\tenorflow\python\ops\gen_logging_ops.py", строка 187, в _histogram_summary "HistogramSummary", tag=tag, values =values, name=name) Файл "c:\users\fawad khalil\appdata\local\ Programs \ python \ python36 \ lib \ site-packages \ensorflow\python\framework\op_def_library.py", строка 787, в _apply_op_helper op_def=op_def) Файл "c:\users\fawad khalil\appdata\local\ Programs\python\python36\lib\site-packages\tenorflow\python\framework\ops.py", строка 2956, в create_op op_def=op_def) Файл "c:\users\fawad khalil\appdata\local\ Programs \ python \ python36 \ lib \ site-packages \ensorflow\python\framework\ops.py", строка 1470, в init self._traceback = self._graph._extract_stack () # pylint: disable = защищенный доступ
InvalidArgumentError (см. Выше для отслеживания): Nan в сводной гистограмме для: deconv2/biases [[Узел: deconv2 / biases = HistogramSummary [T = DT_FLOAT, _device = "/ job: localhost / replica: 0 / task: 0 / device: 0 / device: CPU: 0 "] (deconv2 / biases / tag, deconv2 / bias / read / _105)]] [[Узел: batch/fifo_queue_Size/_91 = _Recvclient_terminated=false, recv_device="/job:localhost/replica:0/task:0/device:GPU:0", send_device="/job:localhost/replica:0/task:0/device:CPU:0", send_device_incarnation=1, тензор_имя ="edge_37_batch/fifo_queue_Size", тензор_тип = DT_INT32, _device =" / работа: локальный / реплика: 0 / задача: 0 / устройства: GPU: 0" ]]
Количество итераций, завершенных в эту эпоху: 0 --------------------------------------------------------------------------- InvalidArgumentError Traceback (последний вызов был последним) c:\users\fawad khalil\appdata\local\ Programs\python\python36\lib\site-packages\tenorflow\python\client\session.py в _do_call(self, fn, *args) 1322 try: -> 1323 return fn(*args) 1324 за исключением ошибок. Ошибка как e:
c: \ users \ fawad khalil \ appdata \ local \ Programs \ python \ python36 \ lib \ site-packages \ensorflow\python\client\session.py в _run_fn(сессия, feed_dict, fetch_list, target_list, опции, run_metadata) 1301 feed_dict, fetch_list, target_list, -> 1302 статус, run_metadata) 1303
c: \ users \ fawad khalil \ appdata \ local \ Programs \ python \ python36 \ lib \ site-packages \ensorflow\python\framework\errors_impl.py при выходе(self, type_arg, value_arg, traceback_arg) 472 compat.as_text(c_api).TF_Message(self.status.status)), -> 473 c_api.TF_GetCode(self.status.status)) 474 # Удалить базовый объект статуса из памяти, в противном случае он остается живым
InvalidArgumentError: Nan в сводной гистограмме для: deconv2 / biases
[[Узел: deconv2 / biases = HistogramSummary [T = DT_FLOAT, _device = "/ job: localhost / replica: 0 / task: 0 / device: CPU: 0"] (deconv2 / biases / tag, deconv2 / bias / read / _105)]] [[Узел: batch / fifo_queue_Size / _91 = _Recvclient_terminated = false, recv_device = "/ job: localhost / replica: 0 / task: 0 / device: GPU: 0", send_device = "/ job: localhost / replica: 0 / задача: 0 / устройство: ЦП: 0 ", send_device_incarnation = 1, тензор_имя ="edge_37_batch/fifo_queue_Size", тензор_тип =DT_INT32, _device="/job:localhost/ реплика: 0 / задача: 0 / устройство: GPU: 0" ]]Во время обработки вышеупомянутого исключения произошло другое исключение:
InvalidArgumentError Traceback (последний вызов был последним) в () 40 # Завершить как обычно. Звонить безопасно
coord.request_stop()
дважды. 41ordin.request_stop() ---> 42ordin.join (enqueue_threads) 43 44 sess.close ()c: \ users \ fawad khalil \ appdata \ local \ Programs\python\python36\lib\site-packages\tenorflow\python\training\ordinator.py в объединении (self, threads, stop_grace_period_secs, ignore_live_threads) 387 self._registered_threads = set() 388 если self._exc_info_to_raise: -> 389 six.reraise(*self._exc_info_to_raise) 390 эльфийских отставших: 391 если ignore_live_threads:
c: \ users \ fawad khalil \ appdata \ local \ Programs\python\python36\lib\site-packages\six.py в ререйзе (tp, value, tb) 691, если значение.traceback - это не tb: повышение значения 692.with_traceback(tb) -> 693 повышение значения 694 наконец: значение 695 = нет
в () 13 train_loss = []; train_accuracy = [] 14 ---> 15 s = sess.run (merged_summary) 16 writer.add_summary (s, epoch) 17
c: \ users \ fawad khalil \ appdata \ local \ Programs\python\python36\lib\site-packages\tenorflow\python\client\session.py в запуске (self, выборки, feed_dict, параметры, run_metadata) 887 try: 888 result = self._run(Нет, выборки, feed_dict, options_ptr, -> 889 run_metadata_ptr) 890, если run_metadata: 891 proto_data = tf_session.TF_GetBuffer (run_metadata_ptr)
c: \ users \ fawad khalil \ appdata \ local \ Programs\python\python36\lib\site-packages\tenorflow\python\client\session.py в _run(self, дескриптор, выборки, feed_dict, параметры, run_metadata)
1118, если final_fetches или final_targets или (handle и feed_dict_tensor): 1119 results = self._do_run (handle, final_targets, final_fetches, -> 1120 feed_dict_tensor, options, run_metadata) 1121 else: 1122 results = []c: \ users \ fawad khalil \ appdata \ local \ Programs \ python \ python36 \ lib \ site-packages \ensorflow\python\client\session.py в _do_run(self, handle, target_list, fetch_list, feed_dict, параметры, run_metadata) 1315, если дескриптор None: 1316 вернуть self._do_call(_run_fn, self._session, каналы, выборки, цели, -> 1317 параметров, run_metadata) 1318 else: 1319 вернуть self._do_call(_prun_fn, self._session, handle, feeds, выбирает)
c: \ users \ fawad khalil \ appdata \ local \ Programs \ python \ python36 \ lib \ site-packages \ensorflow\python\client\session.py в _do_call(self, fn, *args) 1334, кроме KeyError: 1335 pass -> 1336 тип повышения (e) (node_def, op, message) 1337 1338 def _extend_graph (self):
InvalidArgumentError: Nan в сводной гистограмме для: deconv2 / biases
[[Узел: deconv2 / biases = HistogramSummary [T = DT_FLOAT, _device = "/ job: localhost / replica: 0 / task: 0 / device: CPU: 0"] (deconv2 / biases / tag, deconv2 / bias / read / _105)]] [[Узел: batch / fifo_queue_Size / _91 = _Recvclient_terminated = false, recv_device = "/ job: localhost / replica: 0 / task: 0 / device: GPU: 0", send_device = "/ job: localhost / replica: 0 / задача: 0 / устройство: ЦП: 0 ", send_device_incarnation = 1, тензор_имя ="edge_37_batch/fifo_queue_Size", тензор_тип =DT_INT32, _device="/job:localhost/ реплика: 0 / задача: 0 / устройство: GPU: 0" ]]Вызывается операцией 'deconv2/biases', определенной в: файле "c:\users\fawad khalil\appdata\local\ Programs\python\python36\lib\runpy.py", строка 193, в _run_module_as_main "main", mod_spec) Файл "c:\users\fawad khalil\appdata\local\ Programs\python\python36\lib\runpy.py", строка 85, в файле _run_code exec(code, run_globals) Файл "c: \ users \ fawad khalil \ appdata \" local \ Programs\python\python36\lib\site-packages\ipykernel_launcher.py", строка 16, в файле app.launch_new_instance()" c: \ users \ fawad khalil \ appdata \ local \ Programs\python\python36\lib\site-packages\traitlets\config\application.py", строка 658, в файле launch_instance app.start()" c: \ users \ fawad khalil \ appdata \ local \ Programs\python\python36\lib\site-packages\ipykernel\kernelapp.py", строка 478, в начале файла self.io_loop.start()." c: \ users \ fawad khalil \ appdata \ local \ Programs\python\python36\lib\site-packages\zmq\eventloop\ioloop.py", строка 177, в начале super(ZMQIOLoop, self).start() Файл" c: \ users \ fawad khalil \ appdata \ local \ Programs\python\python36\lib\site-packages\tornado\ioloop.py", строка 888, в стартовом файле handler_func(fd_obj, events) Файл" c: \ users \ fawad khalil \ appdata \ local \ Programs\python\python36\lib\site-packages\tornado\stack_context.py", строка 277, в null_wrapper возвращает fn(*args, **kwargs) Файл" c: \ users \ fawad khalil \ appdata \ local \ Programs\python\python36\lib\site-packages\zmq\eventloop\zmqstream.py", строка 440, в файле _handle_events self._handle_recv()" c: \ users \ fawad khalil \ appdata \ local \ Programs \ python \ python36 \ lib \ site-packages \ zmq \ eventloop \ zmqstream.py ", строка 472, в _handle_recv self._run_callback(обратный вызов, msg) файл "c:\users\fawad khalil\appdata\local\ Programs \ python \ python36 \ lib \ site-packages \ zmq \ eventloop \ zmqstream.py", строка 414, в _run_callback callback(*args, **kwargs) Файл "c:\users\fawad khalil\appdata\local\ Programs \ python \ python36 \ lib \ site-packages \ tornado \ stack_context.py", строка 277, в null_wrapper возвращает fn(*args, **kwargs) Файл "c:\users\fawad khalil\appdata\local\ Programs\python\python36\lib\site-packages\ipykernel\kernelbase.py", строка 281, в диспетчере возвращает self.dispatch_shell(stream, msg) Файл" c: \ users \ fawad khalil \ appdata \ local \ Programs \ python \ python36 \ lib \ site-packages \ ipykernel \ kernelbase ".py ", строка 232, в обработчике dispatch_shell (stream, idents, msg) Файл" c: \ users \ fawad khalil \ appdata \ local \ Programs \ python \ python36 \ lib \ site-packages \ ipykernel \ kernelbase.py ", строка 397, в execute_request user_expressions, allow_stdin) Файл "c:\users\fawad khalil\appdata\local\ Programs\python\python36\lib\site-packages\ipykernel\ipkernel.py", строка 208, в do_execute res = shell.run_cell(code, store_history=store_history, silent=silent) Файл "c:\users\fawad khalil\appdata\local\ Programs\python\python36\lib\site-packages\ipykernel\zmqshell.py", строка 533, в run_cell возвращает super(ZMQInteractiveShell, self).run_cell(*args, **kwargs) Файл "c:\users\fawad khalil\appdata\local\ Programs\python\python36\lib\site-packages\IPython\core\interactiveshell.py", строка 2728, в run_cell интерактивность = интерактивность, ком piler= компилятор, результат = результат) Файл "c:\users\fawad khalil\appdata\local\ Programs \ python \ python36 \ lib \ site-packages \ IPython \ core \ interactiveshell.py", строка 2850, в run_ast_nodes, если self.run_code(code, result): файл "c:\users\fawad khalil\appdata\local\ Programs \ python \ python36 \ lib \ site-packages \ IPython \ core \ interactiveshell.py", строка 2910, в исполняемом коде exec(code_obj, self.user_global_ns, self.user_ns) Файл "", строка 1, в output = semantic_seg_model(image_batch, tf.estimator.ModeKeys.TRAIN, BATCH_SIZE) Файл "", строка 107, в файле semantic_seg_model name = "deconv2") "", строка 78, в файле deconv_layer tf.summary.histogram("уклоны", смещение) Файл "c:\users\fawad khalil\appdata\local\ Programs \ python \ python36 \ lib \ site-packages \ensorflow\python\" summary\summary.py", строка 192, в теге гистограммы = тег, значения = значения, имя = область действия) Файл" c: \ users \ fawad khalil \ appdata \ local \ Programs\python\python36\lib\site-packages\tenorflow\python\ops\gen_logging_ops.py", строка 187, в _histogram_summary "HistogramSummary", tag=tag, values =values, name=name) Файл "c:\users\fawad khalil\appdata\local\ Programs \ python \ python36 \ lib \ site-packages \ensorflow\python\framework\op_def_library.py", строка 787, в _apply_op_helper op_def=op_def) Файл "c:\users\fawad khalil\appdata\local\ Programs\python\python36\lib\site-packages\tenorflow\python\framework\ops.py", строка 2956, в create_op op_def=op_def) Файл "c:\users\fawad khalil\appdata\local\ Programs \ python \ python36 \ lib \ site-packages \ensorflow\python\framework\ops.py", строка 1470, в init self._traceback = self._graph._extract_stack () # pylint: disable = защищенный доступ
InvalidArgumentError (см. Выше для отслеживания): Nan в сводной гистограмме для: deconv2/biases [[Узел: deconv2 / biases = HistogramSummary [T = DT_FLOAT, _device = "/ job: localhost / replica: 0 / task: 0 / device: 0 / device: CPU: 0 "] (deconv2 / biases / tag, deconv2 / bias / read / _105)]] [[Узел: batch/fifo_queue_Size/_91 = _Recvclient_terminated=false, recv_device="/job:localhost/replica:0/task:0/device:GPU:0", send_device="/job:localhost/replica:0/task:0/device:CPU:0", send_device_incarnation=1, тензор_имя ="edge_37_batch/fifo_queue_Size", тензор_тип = DT_INT32, _device =" / работа: локальный / реплика: 0 / задача: 0 / устройства: GPU: 0" ]]
Кто-то из GitHub-проблем с тензорным потоком предложил попытаться уменьшить скорость обучения, так как модель расходилась, но это не помогло. Другой предложил, чтобы dtype был изменен на float32 с float16, так как float16 проблематичен. Когда я изменяю dtype данных на float32, я получаю следующую ошибку в консоли журнала python:
[libprotobuf ОШИБКА C:\tf_jenkins\home\workspace\rel-win\M\windows-gpu\PY\36\cmake_build\protobuf\src\protobuf\src\google\protobuf\message_lite.cc:297] Превышен максимальный размер протобуфа 2 ГБ. [libprotobuf ОШИБКА C:\tf_jenkins\home\workspace\rel-win\M\windows-gpu\PY\36\cmake_build\protobuf\src\protobuf\src\google\protobuf\message_lite.cc:297] Превышен максимальный размер протобуфа 2 ГБ.
Эта же ошибка возникает, когда я пытаюсь увеличить ширину и высоту перекрывающихся участков изображения. Я также пытался уменьшить BATCH_SIZE, но не помог.
У меня есть 4 ГБ выделенная видеокарта NVIDIA GeForce GTX 960M и 16 ГБ оперативной памяти с процессором Intel Core i7-6700HQ при 2,60 ГГц и 2,60 ГГц. Версия Python 3.6.4 и версия Tensorflow 1.4 с графическим процессором.
Обновление 1: обновленная модель:
def semantic_seg_model(features, mode, batch_size):
bias_constant = 0.1
conv_filters = [10, 25, 90]
conv_sizes = []
tf.summary.image('input', features, batch_size)
"""Model function for CNN."""
# Encoding starts here.
# Convolutional Layer 1
# Input: 100 x 100
conv = conv_layer(inputs=features,
filters=conv_filters[0],
kernel_size=[2, 2],
bias_constant = bias_constant,
name = "conv1")
conv_sizes.append(conv.shape.as_list())
print(conv.shape)
# Convolutional Layer 2
# Input: 100 x 100
conv = conv_layer(inputs = conv,
filters = conv_filters[1],
kernel_size = [2, 2],
bias_constant = bias_constant,
name = "conv2")
conv_sizes.append(conv.shape.as_list())
print(conv.shape)
# Deconvolution Layer 2
# Input: 100 x 100
deconv = deconv_layer(inputs = conv,
filters = conv_filters[0],
kernel_size = [2, 2],
bias_constant = bias_constant,
output_size = [conv_sizes[0][1], conv_sizes[0][2]],
name = "deconv2")
print(deconv.shape)
deconv = deconv_layer(inputs = deconv,
filters = 3,
kernel_size = [2, 2],
output_size = [features.shape.as_list()[1], features.shape.as_list()[2]],
bias_constant = bias_constant,
name = "deconv1")
print(deconv.shape)
return tf.cast(deconv, dtype = tf.float16)
1 ответ
Я подозреваю, что проблема в том, что у вас есть значительный переодевание; реальное доказательство здесь:
[01/1000] trainLoss: 0.0000 trainAcc: 1.00
Это говорит о том, что только после одной эпохи вы отлично подходите к тренировочным данным; верный признак переоснащения. Таким образом, в результате NaN
Вероятно, неудивительный эффект этой проблемы, так как вы теперь почти наверняка узнали веса, которые вернутся 0
или же inf
на данных или партиях, которые он не видел (так как это слишком плохо).
Чтобы решить эту проблему, я рекомендую существенно упростить вашу модель, пока вы не получите что-то, что не подходит так быстро; например, все меньше и меньше слоев конвоя и деконва. Тогда вы можете начать строить обратно в этой сложности. Затем вы также обнаружите, что вы, вероятно, захотите встроить некоторую выпадение и / или пакетную нормализацию, чтобы справиться с этим переоснащением (примечание: хотя заманчиво просто начать добавлять эту сложность к существующей модели, я рекомендую против нее; сначала просто работать, а потом добавить сложность...).
Последнее замечание: если вы упростите задачу, как предложено выше, у вас, вероятно, будет лучший минимальный пример, которым можно поделиться; это должно позволить нам быстрее разобраться в вашей проблеме.