【发布时间】:2020-05-08 07:53:22
【问题描述】:
我正在尝试让自定义层返回 (25,1) 的张量,但是应该传递一个 batch_size(我从下一层得到一个错误)。我找了一些例子,但不知道如何指定输出形状。
此外,我需要一个独立于输入大小的任意输出形状,因为计算(不是以下示例的一部分)将始终返回固定数量的值。
我尝试了以下方法:
class SimpleLayer(layers.Layer):
def __init__(self, **kwargs):
super(SimpleLayer, self).__init__(**kwargs)
self.baseline = tf.Variable(initial_value=0.1, trainable=True)
def call(self, inputs):
print ("in call inputs:", inputs.shape)
ret = tf.zeros((25, 1)) + self.baseline
print("Ret:", ret, "Shape", tf.shape(ret))
return (ret)
返回:
Ret: Tensor("om/add:0", shape=(25, 1), dtype=float32) Shape Tensor("om/Shape:0", shape=(2,), dtype=int32)
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
inputs (InputLayer) [(None, 150, 1)] 0
_________________________________________________________________
dense (Dense) (None, 150, 256) 512
_________________________________________________________________
om (SimpleLayer) (25, 1) 1
=================================================================
但这确实会产生输出形状 (25, 1) 而不是 (None, 25, 1)。
然后我尝试了:
class SimpleLayer(layers.Layer):
def __init__(self, **kwargs):
super(SimpleLayer, self).__init__(**kwargs)
self.baseline = tf.Variable(initial_value=0.1, trainable=True)
def call(self, inputs):
print ("in call inputs:", inputs.shape)
ret = tf.zeros((25, 1)) + self.baseline
return (ret)
并得到错误:
TypeError: Expected int32, got None of type 'NoneType' instead.
有什么建议吗?
【问题讨论】:
标签: python tensorflow