Я пытаюсь создать новую функцию свертки для Tensorflow, которая использует Multi Processing для более быстрых вычислений.Я относительно новичок в Tensorflow, поэтому не могу понять, что именно мне нужно сделать, чтобы моя функция работала с существующим кодом.
Это существующий код Tensorflow:
def conv2d(x,W):
print("Applying convolution...")
#res = tf.nn.conv2d(x,W,strides=[1,1,1,1],padding='SAME') #This is the original function which is used.
res = myconv.myconv(x) #This is my function which I want to use for convolution operation
return res
Код для функции, которую я разработал, выглядит следующим образом:
def myconv(img):
print("Inside myconv...")
processes_list = []
p1 = multiprocessing.Process(target=task1, args=(img,))
p2 = multiprocessing.Process(target=task2, args=(img,))
p3 = multiprocessing.Process(target=task3, args=(img,))
p4 = multiprocessing.Process(target=task4, args=(img,))
p5 = multiprocessing.Process(target=task5, args=(img,))
processes = []
processes.append(p1)
processes.append(p2)
processes.append(p3)
processes.append(p4)
processes.append(p5)
processes_list.append(processes)
p1.start()
p2.start()
p3.start()
p4.start()
p5.start()
active = len(multiprocessing.active_children())
count_proc = 0
for i in range(0, len(processes_list)):
obj = processes_list[i]
for j in range(0, len(obj)):
processes_list[i][j].join()
count_proc += 1
op_list=[]
temp="/home/piyushraut/PycharmProjects/Tensorflow Env/Intermediate/task"
for i in range(1,6):
fname=temp+str(i)+".jpg"
#print(fname)
op_list.append(cv2.imread(fname,0))
print(op_list)
return op_list
Но когда я пытаюсь запустить эти коды вместе, я получаю следующие ошибки:
Traceback (последний вызовпоследнее):
Файл "/ home / piyushraut / PycharmProjects / Env Tensorflow / mnist_cnn.py", строка 74, в
train_cnn(x) File "/home/piyushraut/PycharmProjects/Tensorflow Env/mnist_cnn.py", line 53, in train_cnn
prediction = cnn(x) File "/home/piyushraut/PycharmProjects/Tensorflow Env/mnist_cnn.py", line
39, в cnn conv1 = tf.nn.relu (conv2d (x, weights ['W_conv1']) + biases ['b_conv1'])
Файл
"/ home / piyushraut / .local / lib / python3.5/site-packages/tensorflow/python/ops/variables.py ", строка 856, в _run_op return getattr (ops.Tensor, operator) (a._AsTensor (), * args)
Файл" / home / piyushraut /.local / lib / python3.5 / site-packages / tenorflow / python / ops / math_ops.py ", строка 893, в r_binary_op_wrapper x = ops.convert_to_tensor (x, dtype = y.dtype.base_dtype, name =" x ")
Файл "/home/piyushraut/.local/lib/python3.5/site-packages/tensorflow/python/framework/ops.py", строка 1050, в convert_to_tensor as_ref = False)
Файл "/ home/piyushraut/.local/lib/python3.5/site-packages/tensorflow/python/framework/ops.py ", строка 1146, в internal_convert_to_tensor ret = translation_func (значение, dtype = dtype, name = name, as_ref = as_ref)
Файл "/home/piyushraut/.local/lib/python3.5/site-packages/tensorflow/python/framework/constant_op.py", строка 229, в _constant_tensor_conversion_function возвращает постоянную (v, dtype = dtype, name =name)
Файл "/home/piyushraut/.local/lib/python3.5/site-packages/tensorflow/python/framework/constant_op.py", строка 208, в постоянном значении, dtype = dtype, shape = shape, verify_shape = verify_shape))
Файл "/home/piyushraut/.local/lib/python3.5/site-packages/tensorflow/python/framework/tensor_util.py", строка 442, в make_tensor_proto _AssertCompatible (значения, dtype)
Файл "/home/piyushraut/.local/lib/python3.5/site-packages/tensorflow/python / framework / tenor_util.py ", строка 353, в _AssertCompatible (dtype.name, repr (несоответствие), type (несоответствие). name )) TypeError: Ожидаемый float32, полученный массив ([[0,0, 0, ..., 0, 0, 0], [0, 0, 0, ..., 0, 0, 0], [0, 0, 0, ..., 0, 0, 0], ..., [0, 0, 0, ..., 0, 0, 0], [0, 0, 0, ..., 0, 0, 0], [0, 0, 0, ..., 0, 0, 0]], dtype = uint8) типа ndarray.
Я новичок в Tensorflow, поэтому не могу понять, в чем именно заключается проблема.Кто-нибудь может помочь мне с этой проблемой?