Я хочу преобразовать тензор формы (?, 224,224,3) в массив с керами в керасах.
Tensor("add_1/add_3:0", shape=(?, 224, 224, 3), dtype=float32)
Мой основной код CNN следующий:
final_model = Model(input=[img_input], output=[act1,act2,act3,act4,act5])
addops(final_model)
def addops(model):
output = model.output
factor = 2
for i in range(len(output)):
output[i] = UpSampling2D(size = (factor**i,factor**i),interpolation='bilinear')(output[i])
output[i] = (ZeroPadding2D((1,1)))(output[i])
output[i] = (Conv2D(3,(3,3)))(output[i])
out = Add()([output[0],output[1],output[2],output[3],output[4]])
print(out)
sess = tf.InteractiveSession()
outarray = tf.Variable(out).eval()
print(outarray)
По сути, я беру предварительно подготовленную модель и собираю карты характеристик нескольких промежуточных слоев и выполняю те преобразования на них, чтобы преобразовать их в размер входного изображения.Позже я добавляю эти измененные карты объектов в один тензор.Я хочу преобразовать этот тензор, названный 'out' в вышеприведенной программе, в массив numpy.Это часть проекта, который я пытаюсь реализовать, но я поражен здесь.
Когда я запускаю этот код, я получаю следующую ошибку
ValueError: initial_value must have a shape specified: Tensor("add_1/add_3:0", shape=(?, 224, 224, 3), dtype=float32)
Программа компилируется, если я не инициализирую сеанс и беру только тензор 'out ' в качестве выхода.Я пробовал несколько других способов и ссылался на различные вопросы о переполнении стека, но ни один из них не дал мне требуемых результатов.Как лучше всего преобразовать этот тензор 'out' в приведенном выше коде в массив NumPy.
Примечание: Я хочу преобразовать этот массив с нулями в изображение позже.Я рад узнать, есть ли какие-либо методы для прямого преобразования этого тензора в изображение.
EDIT1 : я передал изображение, чтобы заполнить значение initial_value в фигуре, но теперь я вижу другую ошибку, которая в основном связана с преобразованием этого тензора вnumpy array.
def addops(model,image):
image = load_img(image,target_size=(224,224))
image = img_to_array(image)
image = np.expand_dims(image,axis=0)
val =model.predict(image)
# print(val)
output = val
factor = 2
for i in range(len(output)):
output[i] = tf.convert_to_tensor(output[i],np.float32)
output[i] = UpSampling2D(size = (factor**i,factor**i),interpolation='bilinear')(output[i])
output[i] = (ZeroPadding2D((1,1)))(output[i])
output[i] = (Conv2D(3,(3,3)))(output[i])
out = Add()([output[0],output[1],output[2],output[3],output[4]])
print(out)
sess = tf.InteractiveSession()
sess.run(tf.global_variables_initializer())
sess.run(tf.local_variables_initializer())
outarray = tf.Variable(out).eval()
print(outarray)
Сообщение об ошибке:
Using TensorFlow backend.
WARNING:tensorflow:From /home/ssindhu/deeplab_env/lib/python3.6/site-packages/tensorflow/python/framework/op_def_library.py:263: colocate_with (from tensorflow.python.framework.ops) is deprecated and will be removed in a future version.
Instructions for updating:
Colocations handled automatically by placer.
2019-09-23 02:39:52.684145: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA
2019-09-23 02:39:52.690019: I tensorflow/core/platform/profile_utils/cpu_utils.cc:94] CPU Frequency: 3493110000 Hz
2019-09-23 02:39:52.692198: I tensorflow/compiler/xla/service/service.cc:150] XLA service 0x51c36f0 executing computations on platform Host. Devices:
2019-09-23 02:39:52.692254: I tensorflow/compiler/xla/service/service.cc:158] StreamExecutor device (0): <undefined>, <undefined>
WARNING:tensorflow:From /home/ssindhu/deeplab_env/lib/python3.6/site-packages/keras/backend/tensorflow_backend.py:3445: calling dropout (from tensorflow.python.ops.nn_ops) with keep_prob is deprecated and will be removed in a future version.
Instructions for updating:
Please use `rate` instead of `keep_prob`. Rate should be set to `rate = 1 - keep_prob`.
/home/ssindhu/hypercolumns.py:107: UserWarning: Update your `Model` call to the Keras 2 API: `Model(inputs=[<tf.Tenso..., outputs=[<tf.Tenso...)`
final_model = Model(input=[img_input], output=[act1,act2,act3,act4,act5])
Frontend weights loaded.
Tensor("add_1/add_3:0", shape=(1, 224, 224, 3), dtype=float32)
Traceback (most recent call last):
File "/home/ssindhu/deeplab_env/lib/python3.6/site-packages/tensorflow/python/client/session.py", line 1334, in _do_call
return fn(*args)
File "/home/ssindhu/deeplab_env/lib/python3.6/site-packages/tensorflow/python/client/session.py", line 1319, in _run_fn
options, feed_dict, fetch_list, target_list, run_metadata)
File "/home/ssindhu/deeplab_env/lib/python3.6/site-packages/tensorflow/python/client/session.py", line 1407, in _call_tf_sessionrun
run_metadata)
tensorflow.python.framework.errors_impl.FailedPreconditionError: Attempting to use uninitialized value Variable
[[{{node _retval_Variable_0_0}}]]
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "training.py", line 18, in <module>
gethypercols(model,'JPEGImages/2007_000033.jpg')
File "/home/ssindhu/hypercolumns.py", line 34, in gethypercols
outarray = tf.Variable(out).eval()
File "/home/ssindhu/deeplab_env/lib/python3.6/site-packages/tensorflow/python/ops/variables.py", line 1695, in eval
return self._variable.eval(session=session)
File "/home/ssindhu/deeplab_env/lib/python3.6/site-packages/tensorflow/python/framework/ops.py", line 695, in eval
return _eval_using_default_session(self, feed_dict, self.graph, session)
File "/home/ssindhu/deeplab_env/lib/python3.6/site-packages/tensorflow/python/framework/ops.py", line 5181, in _eval_using_default_session
return session.run(tensors, feed_dict)
File "/home/ssindhu/deeplab_env/lib/python3.6/site-packages/tensorflow/python/client/session.py", line 929, in run
run_metadata_ptr)
File "/home/ssindhu/deeplab_env/lib/python3.6/site-packages/tensorflow/python/client/session.py", line 1152, in _run
feed_dict_tensor, options, run_metadata)
File "/home/ssindhu/deeplab_env/lib/python3.6/site-packages/tensorflow/python/client/session.py", line 1328, in _do_run
run_metadata)
File "/home/ssindhu/deeplab_env/lib/python3.6/site-packages/tensorflow/python/client/session.py", line 1348, in _do_call
raise type(e)(node_def, op, message)
tensorflow.python.framework.errors_impl.FailedPreconditionError: Attempting to use uninitialized value Variable
[[{{node _retval_Variable_0_0}}]]
В нем говорится, что я пытаюсь использовать неинициализированную переменную-значение.Я видел, что мы должны инициализировать переменные в сеансе для тензорного потока, и поэтому я также включил эти строки. Но все же я вижу ту же ошибку.Как я мог решить это.