3
我正在構建一個帶Keras的卷積神經網絡,並且希望在最後一個完全連接的圖層之前添加一個具有我的數據標準偏差的單個節點。在Keras中合併變量
這裏有一個最小代碼重現錯誤:
from keras.layers import merge, Input, Dense
from keras.layers import Convolution1D, Flatten
from keras import backend as K
input_img = Input(shape=(64, 4))
x = Convolution1D(48, 3, activation='relu', init='he_normal')(input_img)
x = Flatten()(x)
std = K.std(input_img, axis=1)
x = merge([x, std], mode='concat', concat_axis=1)
output = Dense(100, activation='softmax', init='he_normal')(x)
這導致以下TypeError
:
-----------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-117-c1289ebe610e> in <module>()
6 x = merge([x, std], mode='concat', concat_axis=1)
7
----> 8 output = Dense(100, activation='softmax', init='he_normal')(x)
/home/ubuntu/anaconda2/envs/tensorflow/lib/python2.7/site-packages/keras/engine/topology.pyc in __call__(self, x, mask)
486 '`layer.build(batch_input_shape)`')
487 if len(input_shapes) == 1:
--> 488 self.build(input_shapes[0])
489 else:
490 self.build(input_shapes)
/home/ubuntu/anaconda2/envs/tensorflow/lib/python2.7/site-packages/keras/layers/core.pyc in build(self, input_shape)
701
702 self.W = self.init((input_dim, self.output_dim),
--> 703 name='{}_W'.format(self.name))
704 if self.bias:
705 self.b = K.zeros((self.output_dim,),
/home/ubuntu/anaconda2/envs/tensorflow/lib/python2.7/site-packages/keras/initializations.pyc in he_normal(shape, name, dim_ordering)
64 '''
65 fan_in, fan_out = get_fans(shape, dim_ordering=dim_ordering)
---> 66 s = np.sqrt(2./fan_in)
67 return normal(shape, s, name=name)
68
TypeError: unsupported operand type(s) for /: 'float' and 'NoneType'
任何想法,爲什麼?
什麼版本Keras的是你嗎?當我嘗試運行你的代碼時,我得到錯誤:'你試圖調用圖層「dense_output」。該層沒有關於其期望的輸入形狀的信息,其中'dense_output'是最後一層,這是因爲K.std沒有像keras嵌入到其層中的輸出形狀信息。 – 7VoltCrayon