如何处理神经网络的功能?

时间:2019-03-13 23:49:18

标签: python keras neural-network deep-learning

我是深度学习的新手,并且使用带有tensorflow后端的keras。

无论如何,我有一个带有 N 输入和输出( x_i,y_i )的训练集。我的模型首先构造一个神经网络,称为 F ,然后使用函数 g 获得 y 。换句话说, y = g(F(x))其中, F 是一个神经网络,而 g 是一个函数,可能是不可逆的。

是否有一种使用keras构造这种模型的方法?为简化起见,让 y = 3xF(x)+ x 。我想训练这种模型而无需更改训练输出,例如(y_i-x_i)/(3x_i)

1 个答案:

答案 0 :(得分:1)

是的,您可以使用Keras功能API定义模型,并使用Keras后端调用函数以倍增张量。确保x和F(x)具有相同的形状,以便可以将它们相乘。您可能会定义Lambda图层,以确保您的输出是Keras图层。

例如,假设我们的函数F(x)= Sin((x-1)^ 2);我们要计算x * F(x)+ x

定义:

from keras.layers import Input,Lambda
from keras.models import Model
import keras.backend as K

def custom_function(x):
    return K.sin((x-1)*(x-1))+x



def create_model(shape=(10,10,10)):
    x=Input(shape)
    logits=Lambda(custom_function)(x)
    logits= keras.layers.multiply([x,logits])
    logits = keras.layers.add([logits,x])
    model = Model(inputs=x, outputs=logits)
    return model

您需要做的就是确保形状一致,以便我们可以相加并相乘。

有关功能API的更多信息,请参见:https://keras.io/models/model/