我正在尝试在keras中使用lambda图层执行向量矩阵乘法,然后将其传递给另一个图层。矩阵是固定的(我不想学习它)。代码如下:
model.add(Dropout(0.1))
model.add(Lambda(lambda x: x.dot(A)))
model.add(Dense(output_shape, activation='softmax'))
model.compile(<stuff here>)}
A是固定矩阵,我想做x.dot(A)
当我运行它时,我收到以下错误:
'Tensor' object has no attribute 'dot'
当我用matmul替换点时出现相同的错误(我正在使用tensorflow后端)
最后,当我用
替换lambda图层时 model.add(Lambda(lambda x: x*A))
我收到以下错误:
model.add(Lambda(lambda x: x*G))
model.add(Dense(output_shape, activation='softmax'))
AttributeError: 'tuple' object has no attribute '_dims'
我是Keras的新手,所以任何帮助都将受到赞赏。感谢
答案 0 :(得分:2)
我认为您可以添加Dense
图层,初始权重为矩阵A
,并设置参数trainable=False
和use_bias=False
。该层将等同于固定矩阵乘法。
model.add(Dense(A.shape[1], trainable=False, weights=[A], use_bias=False))
答案 1 :(得分:0)
为lambda创建一个函数:
$data = array();
$i = 0.94;
$j = 35;
while($i > 0.50){
$data[(string)$i] = $j;
$i -= 0.01;
$j++;
}
var_dump($data);