Python Keras不能添加一个数字数组,从而产生一个标量吗?
这个问题涉及到,但简单一点 我希望Keras能够获取一组数字并求和。数组应具有由批次维度定义的任意长度 以下简单示例不起作用:Python Keras不能添加一个数字数组,从而产生一个标量吗?,python,tensorflow,keras,Python,Tensorflow,Keras,这个问题涉及到,但简单一点 我希望Keras能够获取一组数字并求和。数组应具有由批次维度定义的任意长度 以下简单示例不起作用: from keras.models import Model from keras.layers import Input, Lambda from keras import backend as K inp = Input(shape = (1,)) out = Lambda(lambda x: K.sum(x))(inp) m = Model(inp, out)
from keras.models import Model
from keras.layers import Input, Lambda
from keras import backend as K
inp = Input(shape = (1,))
out = Lambda(lambda x: K.sum(x))(inp)
m = Model(inp, out)
m.summary()
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
input_7 (InputLayer) (None, 1) 0
_________________________________________________________________
lambda_2 (Lambda) () 0
=================================================================
Total params: 0
Trainable params: 0
Non-trainable params: 0
_________________________________________________________________
输出形状应为标量:(1)
。没有批处理维度<上面定义的code>m,不编译
期望的结果是m.predict(np.array([1,2,3])
产生6
。或者可能是包含6
的数组或张量
这个基本任务——作为函数应用于批处理维度并返回标量——可以在Keras中完成吗?如果不是,它能在纯张量流中完成吗
编辑:我刚刚了解到,您可以通过此模型进行预测,而无需编译:
m.predict(np.array([1,2]))
屈服
array([3., 3.], dtype=float32)
我想我现在的问题是如何将其压缩成一个标量,并将其编译 使用tf.reduce_sum()
和axis=None
。它将减少所有尺寸:
将tensorflow导入为tf
将numpy作为np导入
从tensorflow.keras.models导入模型
从tensorflow.keras.layers导入输入,λ
从tensorflow.keras导入后端为K
inp=输入(形状=(3,))
out=λ(λx:tf.减少_和(x,轴=无))(inp)
m=型号(输入,输出)
m、 预测(np.array([[1,2,4]])#array([7.],dtype=float32)
m、 摘要()
_________________________________________________________________
层(类型)输出形状参数
=================================================================
输入_2(输入层)(无,3)0
_________________________________________________________________
lambda_1(lambda)()0
=================================================================
总参数:0
可训练参数:0
不可训练参数:
输出仍然是与输入相同的维度m.predict(np.array([1,2,4])
产生array([7,7,7.],dtype=float32)
。而且它不能编译…不,你错了。现在看一看您使用的是keras
还是tf.keras
?啊,区别在于您指定了批量大小,而不是第二维度。