如何在角膜中按时处理输入张量

问题描述 投票:0回答:1

我是Keras的新手,我有一个用Keras编写的项目,我想对其稍作修改。我的想法是在每个时期将随机噪声添加到输入张量的随机样本中。因此,在每个时期,输入数据的随机索引都会被噪声破坏。

如果我在馈入角点之前将噪声注入特征model.fit(),则噪声将添加到输入张量的相同样本中,并且在整个训练过程中将保持不变。但是我想在每个时期之后更改随机样本。

因此,我尝试使用回调:

class Noisify(Callback):
    def __init__(self,mixture_rate = 0.2):
        self.mixture_rate = mixture_rate
        
    def on_epoch_begin(self,epoch,logs={}):
        # get input tensor
        
        '''
        mix randomly noisy and clean features here
        
        '''
        
        # set input tensor

但是我找不到像model.get_layerget_weights这样的方法来获取和设置输入张量。怎么办

python keras callback
1个回答
0
投票

只需在模型中添加noise layer

它可以批量工作,但是由于您需要随机噪声,所以这不是问题。

或者,使用以下任何一种:

keras.backend.random_normal
keras.backend.random_uniform
keras.backend.random_binomial
keras.backend.truncated_normal    

请参见Keras backend documentation

工作示例

import numpy as np

from keras import backend as K
from keras.models import Model
from keras.layers import *


ins = Input((10,2))
outs = Lambda(lambda x: K.random_normal(shape=K.shape(x), 
                                        mean=0.0, 
                                        stddev=1.0, 
                                        seed=None))(ins)

model = Model(ins, outs)


for batch in range(10):
    print("\n\nbatch", batch, ':')
    print(model.predict_on_batch(np.zeros((5,10,2))))
© www.soinside.com 2019 - 2024. All rights reserved.