输入图像描述hereI正在尝试建立一个并行的人工神经网络。我计划:
def conv_net():
input_shape = [120,120,1]
inp=Input(shape=input_shape)
print(type(inp))
print(inp.shape)
row_layers = []
col_layers = []
# fn = lambda x: self.conv(x)
for i in range(0, 120, 40):
row_layers = []
for j in range(0, 120, 40):
# out = (self.conv(inp[:,i:i+39,j:j+39]))
inputs = inp[:, i:i + 40, j:j + 40]
x = Dense(64, activation='relu')(inputs)
out = Dense(64, activation='relu')(x)
print(out.shape)
row_layers.append(out)
col_layers.append(keras.layers.concatenate(row_layers, axis=2))
print((len(col_layers)))
merged = keras.layers.concatenate(col_layers, axis=1)
print(merged.shape)
con = Conv2D(1, kernel_size=5, strides=2, padding='same', activation='relu')(merged)
print(con.shape)
output = Flatten()(con)
output = Dense(1)(output)
print(output.shape)
model = Model(inputs=inp, outputs=output)
# plot_model(model,to_file='model.png')
return model我得到一个错误,NoneType对象没有属性_inbound_nodes。
我调试了一下。这是因为这条线的误差。
inputs = inp[:,i:i+40,j:j+40]错误:
Traceback (most recent call last):
File "C:/Users/Todd Letcher/machine_learning_examples/unsupervised_class3/slicing_img.py", line 83, in <module>
conv_net()
File "C:/Users/Todd Letcher/machine_learning_examples/unsupervised_class3/slicing_img.py", line 80, in conv_net
model = Model(inputs=inp, outputs = output)
File "C:\Users\Todd Letcher\AppData\Local\Programs\Python\Python36\lib\site-packages\keras\legacy\interfaces.py", line 91, in wrapper
return func(*args, **kwargs)
File "C:\Users\Todd Letcher\AppData\Local\Programs\Python\Python36\lib\site-packages\keras\engine\network.py", line 91, in __init__
self._init_graph_network(*args, **kwargs)
File "C:\Users\Todd Letcher\AppData\Local\Programs\Python\Python36\lib\site-packages\keras\engine\network.py", line 235, in _init_graph_network
self.inputs, self.outputs)
File "C:\Users\Todd Letcher\AppData\Local\Programs\Python\Python36\lib\site-packages\keras\engine\network.py", line 1406, in _map_graph_network
tensor_index=tensor_index)
File "C:\Users\Todd Letcher\AppData\Local\Programs\Python\Python36\lib\site-packages\keras\engine\network.py", line 1393, in build_map
node_index, tensor_index)
File "C:\Users\Todd Letcher\AppData\Local\Programs\Python\Python36\lib\site-packages\keras\engine\network.py", line 1393, in build_map
node_index, tensor_index)
File "C:\Users\Todd Letcher\AppData\Local\Programs\Python\Python36\lib\site-packages\keras\engine\network.py", line 1393, in build_map
node_index, tensor_index)
File "C:\Users\Todd Letcher\AppData\Local\Programs\Python\Python36\lib\site-packages\keras\engine\network.py", line 1365, in build_map
node = layer._inbound_nodes[node_index]
AttributeError: 'NoneType' object has no attribute '_inbound_nodes'帮助感激。谢谢
P.S.:我删除了切片行inp[:,i:i+39,j:j+39],它运行正常。
图片显示了我想做的事。唯一的区别是,我想把图像分割成9个瓷砖。在这里,同样的图像被馈送给所有并行的Conv-网。
[1]: https://i.stack.imgur.com/Z7nt0.png发布于 2018-06-28 21:24:58
终于得到了答案。虽然我仍然不知道为什么我以前的代码抛出错误,我只是添加lambda层的分裂。
def conv_net(self): # Add dropout if Overfiting
input_shape = [120,120,1]
inp=Input(shape=input_shape)
col_layers = []
def sliced(x,i,j):
return x[:,i:i+40,j:j+40]
for i in range(0,120,40):
row_layers = []
for j in range(0,120,40):
#out = (self.conv(inp[:,i:i+39,j:j+39]))
inputs = Lambda(sliced,arguments={'i':i,'j':j})(inp)
#inputs = Input(shape=input_shape_small)
out = (self.conv(inputs))
print(out.shape)
row_layers.append(out)
col_layers.append(keras.layers.concatenate(row_layers, axis=2))
print((len(col_layers)))
merged = keras.layers.concatenate(col_layers,axis=1)
print(merged.shape)
#merged = Reshape((3,3,1))(merged)
print(merged.shape)
con = Conv2D(1,kernel_size=5,strides=2,padding='same',activation='relu')(merged)
con = (BatchNormalization(momentum=0.8))(con)
print(con.shape)
#con = Conv2D(1,kernel_size=5,strides=2,padding='same',activation='relu')(inp)
output = Flatten()(con)
output = Dense(1)(output)
print(output.shape)
model = Model(inputs=inp, outputs = output)
#plot_model(model,to_file='model.png')
print(model.summary())
plot_model(model, to_file='model_plot.png', show_shapes=True, show_layer_names=True)
return model这样做没有错误。
https://stackoverflow.com/questions/51031623
复制相似问题