【发布时间】:2017-10-25 06:52:39
【问题描述】:
我正在尝试使用 for 循环分隔 keras Conv2D 层的每个输出,然后通过 Functional API 向其添加另一层,但出现类型错误。代码是:
import keras
from keras.models import Sequential, Model
from keras.layers import Flatten, Dense, Dropout, Input, Activation
from keras.layers.convolutional import Conv2D, MaxPooling2D, ZeroPadding2D
from keras.layers.merge import Add
from keras.optimizers import SGD
import cv2, numpy as np
import glob
import csv
def conv_layer:
input = Input(shape=(3,224,224))
k = 64
x = np.empty(k, dtype=object)
y = np.empty(k, dtype=object)
z = np.empty(k, dtype=object)
for i in range(0,k):
x[i] = Conv2D(1, (3,3), data_format='channels_first', padding='same')(input)
y[i] = Conv2D(1, (3,3), data_format='channels_first', padding='same')(x[i])
z[i] = keras.layers.add([x[i], y[i]])
out = Activation('relu')(z)
model = Model(inputs, out, name='split-layer-model')
return model
但是,它抛出以下错误:
Traceback (most recent call last):
File "vgg16-local-connections.py", line 352, in <module>
model = VGG_16_local_connections()
File "vgg16-local-connections.py", line 40, in VGG_16_local_connections
out = Activation('relu')(z)
File "/Users/klab/anaconda2/lib/python2.7/site-packages/keras/engine/topology.py", line 519, in __call__
input_shapes.append(K.int_shape(x_elem))
File "/Users/klab/anaconda2/lib/python2.7/site-packages/keras/backend/tensorflow_backend.py", line 409, in int_shape
shape = x.get_shape()
AttributeError: 'numpy.ndarray' object has no attribute 'get_shape'
因此,z 的数据类型与 Functional API 的数据类型不匹配。我怎样才能解决这个问题?任何帮助将不胜感激!
【问题讨论】:
标签: keras conv-neural-network keras-layer