我正试图写一个鉴别器,评估一个图像的补丁。
我使用时间分布层的原因是,在最后,鉴别器应该判断整个图像是真是假。因此,我尝试分别对每个补丁执行前向传递,然后通过lambda层平均每个补丁的鉴别器输出:
def my_average(x):
x = K.mean(x, axis=1)
return x
def my_average_shape(input_shape):
shape = list(input_shape)
del shape[1]
return tuple(shape)
def defineD(input_shape):
a = Input(shape=(256, 256, 1))
cropping_list = []
n_patches = 256/32
for x in range(256/32):
for y in range(256/32):
cropping_list += [
K.expand_dims(
Cropping2D((( x * 32, 256 - (x+1) * 32), ( y * 32, 256 - (y+1) * 32)))(a)
, axis=1)
]
x = Concatenate(1)(cropping_list)
x = TimeDistributed(Conv2D(4 * 8, 3, padding='same'))(x) #
x = TimeDistributed(MaxPooling2D())(x)
x = TimeDistributed(LeakyReLU())(x) # 16
x = TimeDistributed(Conv2D(4 * 16, 3, padding='same'))(x)
x = TimeDistributed(MaxPooling2D())(x)
x = TimeDistributed(LeakyReLU())(x) # 8
x = TimeDistributed(Conv2D(4 * 32, 3, padding='same'))(x)
x = TimeDistributed(MaxPooling2D())(x)
x = TimeDistributed(LeakyReLU())(x) # 4
x = TimeDistributed(Flatten())(x)
x = TimeDistributed(Dense(2, activation='sigmoid'))(x)
x = Lambda(my_average, my_average_shape)(x)
return keras.models.Model(inputs=a, outputs=x)
出于某种原因,我得到以下错误:
File "testing.py", line 41, in <module>
defineD((256,256,1) )
File "testing.py", line 38, in defineD
return keras.models.Model(inputs=a, outputs=x)
File "/usr/local/lib/python2.7/dist-packages/keras/legacy/interfaces.py", line 91, in wrapper
return func(*args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/keras/engine/network.py", line 93, in __init__
self._init_graph_network(*args, **kwargs)
File "/usr/local/lib/python2.7/dist-packages/keras/engine/network.py", line 237, in _init_graph_network
self.inputs, self.outputs)
File "/usr/local/lib/python2.7/dist-packages/keras/engine/network.py", line 1353, in _map_graph_network
tensor_index=tensor_index)
File "/usr/local/lib/python2.7/dist-packages/keras/engine/network.py", line 1340, in build_map
node_index, tensor_index)
File "/usr/local/lib/python2.7/dist-packages/keras/engine/network.py", line 1340, in build_map
node_index, tensor_index)
File "/usr/local/lib/python2.7/dist-packages/keras/engine/network.py", line 1340, in build_map
node_index, tensor_index)
File "/usr/local/lib/python2.7/dist-packages/keras/engine/network.py", line 1340, in build_map
node_index, tensor_index)
File "/usr/local/lib/python2.7/dist-packages/keras/engine/network.py", line 1340, in build_map
node_index, tensor_index)
File "/usr/local/lib/python2.7/dist-packages/keras/engine/network.py", line 1340, in build_map
node_index, tensor_index)
File "/usr/local/lib/python2.7/dist-packages/keras/engine/network.py", line 1340, in build_map
node_index, tensor_index)
File "/usr/local/lib/python2.7/dist-packages/keras/engine/network.py", line 1340, in build_map
node_index, tensor_index)
File "/usr/local/lib/python2.7/dist-packages/keras/engine/network.py", line 1340, in build_map
node_index, tensor_index)
File "/usr/local/lib/python2.7/dist-packages/keras/engine/network.py", line 1340, in build_map
node_index, tensor_index)
File "/usr/local/lib/python2.7/dist-packages/keras/engine/network.py", line 1340, in build_map
node_index, tensor_index)
File "/usr/local/lib/python2.7/dist-packages/keras/engine/network.py", line 1340, in build_map
node_index, tensor_index)
File "/usr/local/lib/python2.7/dist-packages/keras/engine/network.py", line 1312, in build_map
node = layer._inbound_nodes[node_index]
AttributeError: 'NoneType' object has no attribute '_inbound_nodes'