gpt4 book ai didi

python - 在 Keras 中合并变量

转载 作者:行者123 更新时间:2023-11-28 18:28:06 28 4
gpt4 key购买 nike

我正在使用 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'

知道为什么吗?

最佳答案

std 不是 Keras 层,因此它不满足层输入/输出形状接口(interface)。解决方案是使用 Lambda层包装 K.std:

from keras.layers import merge, Input, Dense, Lambda
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 = Lambda(lambda x: K.std(x, axis=1))(input_img)
x = merge([x, std], mode='concat', concat_axis=1)

output = Dense(100, activation='softmax', init='he_normal')(x)

关于python - 在 Keras 中合并变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39731669/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com