python - 如何处理神经网络的函数?
问题描述
我是深度学习的新手,我使用带有 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)。
解决方案
是的,您可以使用 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/
推荐阅读
- python - Python 代码在 Mac 上的 PyCharm 中有效,但在 FreeBSD Jail 中无效
- c++ - 使用 OpenCV 和 C++ 的高斯滤波器
- javascript - Javascript中的数组多维拆分为两个数组
- c - 模仿c中的“cat>”命令(LINUX/UNIX)
- c++ - 构建 docker 映像在本地工作,但在 docker hub 上不起作用 - cmake
- spring-boot - 多模块 liquibase 项目
- php - $value++ 不会在 php 中为我加 1
- javascript - 我可以将 .load 函数与 document.referrer 函数结合使用吗?
- r - 带有 `on = ` 的 data.table 子分配
- javascript - 在 Angular 8 中创建过滤器管道