0
class MyLayer(Layer):
def __init__(self, output_dim, **kwargs):
self.output_dim = output_dim
super(MyLayer, self).__init__(**kwargs)
# self.activation = activations.get(activation)
def build(self, input_shape):
# Create a trainable weight variable for this layer.
input_dim = input_shape[-1]
# print input_shape
kernel_shape = [input_dim/2, input_dim/2]
print kernel_shape
self.kernel = self.add_weight(shape=kernel_shape,
initializer='uniform',
trainable=True)
super(MyLayer, self).build(input_shape) # Be sure to call this somewhere!
def call(self, x):
inputs = x
input_shape = K.int_shape(inputs)
print input_shape
T = tf.reshape(inputs,[-1,2,tf.to_int32(input_shape[1]/2)])
# P = tf.matmul(T,self.kernel)
P = tf.matmul(T[:,1,:], self.kernel)
G = T[:,0,:]
op = tf.concat([P,G], axis=0)
op = tf.reshape(op, [-1, 2, tf.to_int32(input_shape[1]/2)])
print op
return op
def compute_output_shape(self, input_shape):
return (input_shape[0], self.output_dim)
どうか私を助けてくださいこれで何が欠けていますか?TypeError:add_weight()は少なくとも3つの引数をとります(4が指定されています)
スタックトレースは以下のとおりである:
Traceback (most recent call last):
File "/root/PycharmProjects/tranferNET/modelBuild.py", line 193, in <module> model = create_network([100, 100, 3])
File "/root/PycharmProjects/tranferNET/modelBuild.py", line 174, in create_network com_distribution = MyLayer((2,256))(merge_common2)
File "/root/Tensorflow/local/lib/python2.7/site-packages/keras/engine/topology.py", line 558, in __call__ self.build(input_shapes[0])
File "/root/PycharmProjects/tranferNET/ncLayer.py", line 70, in build trainable=True)
File "/root/Tensorflow/local/lib/python2.7/site-packages/keras/legacy/interfaces.py", line 88, in wrapper
return func(*args, **kwargs)
TypeError: add_weight() takes at least 3 arguments (4 given)
コードとエラーメッセージを再フォーマットしました。うまくいけば、もう少し読みやすくなりました。 – Rook
ありがとうございます!!!!!! –
Documentationの 'Layer.add_weight(...')のパラメータを確認してください。自動追加された最初のパラメータ 'self'を監視してください。 – stovfl