首页 > 解决方案 > 如何处理神经网络的函数?

问题描述

我是深度学习的新手,我使用带有 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)

标签: pythonkerasneural-networkdeep-learning

解决方案


是的,您可以使用 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/


推荐阅读