forループを使用してkeras
Conv2D
レイヤーの出力をそれぞれ別々にして、Functional API
で別のレイヤーを追加しようとしましたが、タイプエラーが発生します。コードは次のとおりです。Keras: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
のものと一致しません。これをどうすれば解決できますか?どんな助力も深く感謝します!
実際には、スタック全体がReLUのアクティブ化をしたかったので、 'z'を呼び出すだけで十分だと思っていました。私は後で間違いを認識し、 'out = Activation( 'relu')行の前に' z = keras.layers.concatenate([z(i、範囲)(0、k)]、axis = 1) z) '、それは完全に働いた。 – Prabaha