首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在keras或tensorflow中是否有相当于pytorch.nn.functional.unfold()的内容?

在keras或tensorflow中是否有相当于pytorch.nn.functional.unfold()的内容?
EN

Stack Overflow用户
提问于 2020-07-29 15:09:13
回答 1查看 1.5K关注 0票数 2

我想在角星做一个类似的手术。但是,我不能在角点做展开手术。我尝试过用conv1D层,但找不出。如能提供任何帮助,将不胜感激。

“”“

代码语言:javascript
复制
import numpy as np
import torch

x = torch.tensor(np.random.rand(25,100,24))   # tensor of shape (batch_size, seq_length,feature_dim)
x = x.unsqueeze(1) # shape=(25,1,100,24)

import torch.nn.functional as F
x = F.unfold(x,(5, 24), stride=(1,24),dilation=(1,1)) #shape (25,120,96)

“”“

EN

回答 1

Stack Overflow用户

发布于 2020-07-29 18:15:57

我不认为有。但你可以做一件事。使用紧绷的展开。创建一个函数来展开输入数组。然后使用该功能在keras或tf2.0中创建lambda层。假设您有输入数组X:

代码语言:javascript
复制
 X = np.array([[[ 0,  1],
                   [ 2,  3],
                   [ 4,  5],
                   [ 6,  7]],
    
                  [[ 8,  9],
                   [10, 11],
                   [12, 13],
                   [14, 15]],
    
                  [[16, 17],
                   [18, 19],
                   [20, 21],
                   [22, 23]]])

要展开张量,只需使用来自TensorLy的展开函数:

代码语言:javascript
复制
> from tensorly import unfold unfold(X, 0)
>> array([[ 0,  1,  2,  3,  4,  5,  6,  7],
       [ 8,  9, 10, 11, 12, 13, 14, 15],
       [16, 17, 18, 19, 20, 21, 22, 23]])

现在创建一个函数,该函数接受输入数组并返回展开数组

代码语言:javascript
复制
def unfold(X):
        return unfold(X, 0)

现在将此函数用作keras中的一个层。

代码语言:javascript
复制
from keras.layers import Lambda
from keras.models import Sequential

model = Sequential()
model.add(....some_layer....)
model.add(....anotenter code hereher_layer....)
model.add(Lambda(unfold))   <<<<=== using our unfold function as keras layer
model.add(...more_layers..)

希望这能帮上忙!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63156717

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档