小编Bob*_*utt的帖子

Keras中按功能进行缩放和平移(FiLM层)

我正在尝试对Keras张量(带有TF后端)应用按功能进行特征缩放和平移(也称为仿射变换-该想法在此提要的文章的术语部分中进行了描述)。

我想转换的张量称为X卷积层的输出,并且具有shape (B,H,W,F),表示(批大小,高度,宽度,特征图的数量)。

我变换的参数是二维(B,F)张量,betagamma

我想要X * gamma + beta或更具体地讲,

for b in range(B):
    for f in range(F):
        X[b,:,:,f] = X[b,:,:,f] * gamma[b,f] + beta[b,f]
Run Code Online (Sandbox Code Playgroud)

但是,这两种方法都无法在Keras中使用。第二个,按元素分配,由于

TypeError: 'Tensor' object does not support item assignment
Run Code Online (Sandbox Code Playgroud)

并且应该是相当低效的。

第一次失败的方式对我来说更神秘,但我的猜测是这是广播的问题。在下面的完整代码+追溯中,您可以看到我的尝试。

需要注意的两件事是,错误仅在训练时发生(而不是在编译时发生),并且'transform_vars'至少根据模型摘要,似乎从未使用过输入。

关于如何实现这一点的任何想法?

import numpy as np
import keras as ks
import keras.backend as K

print(ks.__version__)

# Load example data (here MNIST)
from keras.datasets import mnist
(x_img_train, y_train), _ = mnist.load_data() …
Run Code Online (Sandbox Code Playgroud)

python keras tensorflow

5
推荐指数
1
解决办法
277
查看次数

标签 统计

keras ×1

python ×1

tensorflow ×1