Rui*_*eng 5 matrix keras tensorflow keras-layer
我只想实现一个给定矩阵X返回X的协方差矩阵(X ^ T * X)的函数,这只是一个简单的矩阵乘法。
在Tensorflow中会很容易:tf.matmul(X,tf.transpose(X))
但是我没想到这对Keras来说是一场噩梦。Keras中的API(例如乘法和点运算)不适合我的要求。我还尝试了不同的方法(Lambda层并与TF操作混合),但仍然失败,并发生了很多错误。
希望有人可以帮忙。谢谢。
实际上,您在 Keras 中确实有类似的东西。试试dot(x, transpose(x))。
下面是比较两个平台的工作示例。
import keras.backend as K
import numpy as np
import tensorflow as tf
def cov_tf(x_val):
x = tf.constant(x_val)
cov = tf.matmul(x, tf.transpose(x))
return cov.eval(session=tf.Session())
def cov_keras(x_val):
x = K.constant(x_val)
cov = K.dot(x, K.transpose(x))
return cov.eval(session=tf.Session())
if __name__ == '__main__':
x = np.random.rand(4, 5)
delta = np.abs(cov_tf(x) - cov_keras(x)).max()
print('Maximum absolute difference:', delta)
Run Code Online (Sandbox Code Playgroud)
最大绝对差异被打印出来并给我一些东西1e-7。
| 归档时间: |
|
| 查看次数: |
6841 次 |
| 最近记录: |