【发布时间】:2019-08-25 15:37:41
【问题描述】:
给定 tensorflow 中的自定义层,是否可以让模型仅在一个时期内使用它?对于所有其他时期,该层可能会被忽略,或者只是一个身份。
例如:给定数据,我希望层简单地将给定数据加倍。其他层应该可以正常工作。如何做到这一点?
def do_stuff(data):
return 2*data
def run_once(data):
return tf.py_func(do_stuff,
[data],
'float32',
stateful=False,
name='I run once')
class CustomLayer(Layer):
def __init__(self, output_dim, **kwargs):
self.output_dim = output_dim
self.trainable = False
super(CustomLayer, self).__init__(**kwargs)
def call(self, x):
res = tf.map_fn(run_once, x)
res.set_shape([x.shape[0],
self.output_dim[1],
self.output_dim[0],
x.shape[-1]])
return res
inputs = Input(shape=(224, 224, 1))
x = Lambda(preprocess_input(x), input_shape=(224, 224, 1), output_shape=(224, 224, 3))
outputs = Dense(1)(x)
model = Model(input=inputs, output=outputs)
output = model(x)
【问题讨论】:
标签: tensorflow keras neural-network layer