Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Keras不能添加一个数字数组,从而产生一个标量吗?_Python_Tensorflow_Keras - Fatal编程技术网

Python 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)

这个问题涉及到,但简单一点

我希望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)

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
?啊,区别在于您指定了批量大小,而不是第二维度。