Как я могу повторить один пиксель тензора для всех пикселей в новом тензоре? - PullRequest
0 голосов
/ 19 марта 2019

У меня есть тензор с формой (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].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...