我在keras中有一个名为wtm的shape(1,4,4,1)的张量,它是输入。现在我需要访问该张量的每个像素,并且每次将其每个像素散布到一个新的(1,28,28)张量并添加到编码器中。例如,假设形状为(1,4,4,1)的wtm的值为0或1。首先,我需要知道该张量的每个像素的值是多少,然后生成形状为(1,28, 28,1),使其所有值均与上述像素的值相同。我想我应该使用lambda层,但是我不知道如何访问张量的每个值?你能告诉我我该怎么做吗?
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])
但是会产生此错误:
回溯(最近通话最近一次):
文件“”,第64行,在 wtmN = Kr.layers.Lambda(K.tile,arguments = {'n':( 1,28,28,1)})(wtm [:,1,1,:])
文件 “ D:\ software \ Anaconda3 \ envs \ py36 \ lib \ site-packages \ keras \ engine \ base_layer.py”, 第457行,致电 输出= self.call(输入,** kwargs)
文件 “ D:\ software \ Anaconda3 \ envs \ py36 \ lib \ site-packages \ keras \ layers \ core.py”, 687行,正在通话中 返回self.function(inputs,** arguments)
文件 “ D:\ software \ Anaconda3 \ envs \ py36 \ lib \ site-packages \ keras \ backend \ tensorflow_backend.py”, 第2191行,在图块中 返回tf.tile(x,n)
文件 “ D:\ software \ Anaconda3 \ envs \ py36 \ lib \ site-packages \ tensorflow \ python \ ops \ gen_array_ops.py”, 线8805,在磁贴中 “平铺”,input = input,multiples = multiples,name = name)
文件 “ D:\ software \ Anaconda3 \ envs \ py36 \ lib \ site-packages \ tensorflow \ python \ framework \ op_def_library.py”, _apply_op_helper中的第787行 op_def = op_def)
文件 “ D:\ software \ Anaconda3 \ envs \ py36 \ lib \ site-packages \ tensorflow \ python \ util \ deprecation.py”, 第488行,在new_func中 返回func(* args,** kwargs)
文件 “ D:\ software \ Anaconda3 \ envs \ py36 \ lib \ site-packages \ tensorflow \ python \ framework \ ops.py”, 第3274行,在create_op中 op_def = op_def)
文件 “ D:\ software \ Anaconda3 \ envs \ py36 \ lib \ site-packages \ tensorflow \ python \ framework \ ops.py”, 第1792行,在 init 中 control_input_ops)
文件 “ D:\ software \ Anaconda3 \ envs \ py36 \ lib \ site-packages \ tensorflow \ python \ framework \ ops.py”, 第1631行,位于_create_c_op中 引发ValueError(str(e))
ValueError:“ Lambda_1 / Tile”的形状必须为2级,但必须为4级 (op:“平铺”),输入形状为[?,1],[4]。