使用lambda层和共享变量时,我无法保存keras模型。这是给出此错误的最少代码:
# General imports.
import numpy as np
# Keras for deep learning.
from keras.layers.core import Dense,Lambda
from keras.layers import Input
from keras.models import Model
import keras.backend as K
n_inputs = 20
n_instances = 100
def preprocess(X,minimum,span):
output = (X - minimum)/span
return output
inputs = Input(shape=(n_inputs,),name='input_tensor')
maximum = K.max(inputs)
minimum = K.min(inputs)
span = maximum - minimum
x = Lambda(preprocess,arguments={'minimum':minimum,'span':span})(inputs)
x = Dense(units=100,activation='elu')(x)
outputs = Dense(units=n_inputs,activation='elu')(x)
model = Model(inputs=inputs,outputs=outputs)
model.compile(optimizer='adam', loss='mse')
x = np.array([np.random.randn(20) for i in range(n_instances)])
y …Run Code Online (Sandbox Code Playgroud) 我希望有一个函数可以返回不带参数调用的函数,即使原始函数必须带参数调用也是如此。该参数将传递给第一个函数,并且每次调用返回的函数时都将隐式使用该参数。
我知道C中的函数指针,但不知道是否可以这种方式使用它们。我知道如何在python中执行此操作,如以下示例代码所示:
def foo(some_argument):
print(some_argument)
def register_callback(function, argument):
def new_function():
function(argument)
return new_function
bar = register_callback(foo,"bar")
bar()
Run Code Online (Sandbox Code Playgroud)
据我了解,在C语言中这种方法是不可能的,因为我们不能嵌套函数定义。这是可能的,如果可以的话,这样做的正确方法是什么?