У меня есть тензор с формой (1,4,4,1) с именем wtm в кератах, и это вход. Теперь мне нужно получить доступ к каждому пикселю этого тензора и каждый раз разбрасывать каждый его пиксель до (1,28,28) нового тензора и добавлять в кодировщик. например, предположим, что wtm с формой (1,4,4,1) имеет значения 0 или 1. Сначала мне нужно узнать значение каждого пикселя этого тензора, а затем создать новый тензор с формой (1,28, 28,1), так что все его значение совпадает со значением упомянутого пикселя. Я думаю, что я должен использовать лямбда-слой, но я не знаю, как я могу получить доступ к каждому значению тензора? не могли бы вы сказать мне, как я могу это сделать?
wtm=Input((4,4,1))
image = Input((28, 28, 1))
conv1 = Conv2D(64, (5, 5), activation='relu', padding='same', name='convl1e')(image)
conv2 = Conv2D(64, (5, 5), activation='relu', padding='same', name='convl2e')(conv1)
conv3 = Conv2D(64, (5, 5), activation='relu', padding='same', name='convl3e')(conv2)
BN=BatchNormalization()(conv3)
encoded = Conv2D(1, (5, 5), activation='relu', padding='same',name='encoded_I')(BN)
Мне нужно вот так
wtmN=Kr.layers.Lambda(K.tile,arguments={'n':(1,28,28,1)})(wtm[:,1,1,:])
add_const = Kr.layers.Lambda(lambda x: x[0] + x[1])
encoded_merged = add_const([encoded,wtmN])
но выдает эту ошибку:
Traceback (последний вызов был последним):
Файл "", строка 64, в
wtmN = Kr.layers.Lambda (K.tile, аргументы = { 'п' :( 1,28,28,1)}) (WTM [:, 1,1,:]) * * +1012
Файл
"D: \ Software \ Anaconda3 \ envs \ py36 \ Lib \ сайт-пакеты \ keras \ двигатель \ base_layer.py",
линия 457, вызов
output = self.call (входные данные, ** кваргс)
Файл
"D: \ Software \ Anaconda3 \ envs \ py36 \ Lib \ сайт-пакеты \ keras \ слоев \ core.py",
линия 687, в вызове
вернуть self.function (входные данные, ** аргументы)
Файл
"D: \ Software \ Anaconda3 \ envs \ py36 \ Lib \ сайт-пакеты \ keras \ бэкэнд \ tensorflow_backend.py",
линия 2191, в плитке
return tf.tile (x, n)
Файл
"D: \ Software \ Anaconda3 \ envs \ py36 \ Lib \ сайт-пакеты \ tensorflow \ питон \ OPS \ gen_array_ops.py",
линия 8805, в плитке
«Плитка», вход = вход, кратно = кратно, имя = имя)
Файл
"D: \ Software \ Anaconda3 \ envs \ py36 \ Lib \ сайт-пакеты \ tensorflow \ питон \ рамки \ op_def_library.py",
строка 787, в _apply_op_helper
op_def = op_def)
Файл
"D: \ Software \ Anaconda3 \ envs \ py36 \ Lib \ сайт-пакеты \ tensorflow \ питон \ Util \ deprecation.py",
строка 488, в new_func
return func (* args, ** kwargs)
Файл
"D: \ Software \ Anaconda3 \ envs \ py36 \ Lib \ сайт-пакеты \ tensorflow \ питон \ рамки \ ops.py",
строка 3274, в create_op
op_def = op_def)
Файл
"D: \ Software \ Anaconda3 \ envs \ py36 \ Lib \ сайт-пакеты \ tensorflow \ питон \ рамки \ ops.py",
строка 1792, в init
control_input_ops)
Файл
"D: \ Software \ Anaconda3 \ envs \ py36 \ Lib \ сайт-пакеты \ tensorflow \ питон \ рамки \ ops.py",
строка 1631, в _create_c_op
повысить ValueError (str (e))
ValueError: Shape должен иметь ранг 2, но это ранг 4 для 'lambda_1 / Tile'
(op: 'Tile') с входными формами: [?, 1], [4].