繁体   English   中英

Keras:如何仅从张量中提取某些层

[英]Keras: How to extract only certain layers from a tensor

我有一个形状为[6,20,30,6]的4-D张量,我想执行等效于以下内容的keras / tensorflow:

new = np.array([old[i,:,:,i] for i in range(6)])

任何帮助表示赞赏!

您可以扩展old的尺寸,使用理解列表选择所需的切片并将其沿扩展的尺寸连接起来。 例如:

import tensorflow as tf
import numpy as np

tensor_shape = (6, 20, 30, 6)
old = np.arange(np.prod(tensor_shape)).reshape(tensor_shape)
new = np.array([old[i, :, :, i] for i in range(6)])

old_ = tf.placeholder(old.dtype, tensor_shape)
new_ = tf.concat([old[None, i, :, :, i] for i in range(6)], axis=0)

with tf.Session() as sess:
    new_tf = sess.run(new_, feed_dict={old_: old})
    assert (new == new_tf).all()

感谢@rvinas的回答,我得以用纯正的喀拉拉邦铸成。

def cc(x):
    return K.backend.stack([x[:,i, :, :, i] for i in range(6)], axis=1)

然后在keras模型定义中:

new=L.Lambda(lambda y: cc(y))(old) 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM