keras中的目標函式和優化函式

2021-07-11 14:54:22 字數 2529 閱讀 7554

目標函式就是我們常說的損失函式,優化函式就是我們常說的反調引數的函式,包括:梯度下降函式、隨機梯度下降函式等。

目標函式:

keras文件:  

詳細請參照theano的官方文件,

優化函式:

keras文件: 

下面是乙個自定義的優化器的乙個demo:

model = sequential()  

model.add(dense(64, init='uniform', input_dim=10))

model.add(activation('tanh'))

model.add(activation('softmax'))

sgd = sgd(lr=0.1, decay=1e-6, momentum=0.9, nesterov=true)

model.compile(loss='mean_squared_error', optimizer=sgd)

下面是預設的sgd優化器的使用和引數介紹:

model.compile(loss='mean_squared_error', optimizer='sgd')
keras.optimizers.sgd(lr=0.01, momentum=0.0, decay=0.0, nesterov=false)

stochastic gradient descent, with support for momentum, learning rate decay, and nesterov momentum.

隨機梯度下降演算法, 看到這個名字是不是很熟了

arguments

lr: float >= 0. learning rate.

momentum: float >= 0. parameter updates momentum.(引數更新的動量, 我也不知道啥意思

)decay: float >= 0. learning rate decay over each update.(學習率衰減量,具體是每次都衰減)

上面好多名詞都不明白什麼意思,應該把實現的原始碼貼出來大家看一下

class sgd(optimizer):

'''stochastic gradient descent, with support for momentum,

learning rate decay, and nesterov momentum.

# arguments

lr: float >= 0. learning rate.

momentum: float >= 0. parameter updates momentum.

decay: float >= 0. learning rate decay over each update.

'''def __init__(self, lr=0.01, momentum=0., decay=0., nesterov=false,

*args, **kwargs):

super(sgd, self).__init__(**kwargs)

self.__dict__.update(locals())

self.iterations = k.variable(0.)

self.lr = k.variable(lr)

self.momentum = k.variable(momentum)

self.decay = k.variable(decay)

def get_updates(self, params, constraints, loss):

grads = self.get_gradients(loss, params)

lr = self.lr * (1. / (1. + self.decay * self.iterations))

self.updates = [(self.iterations, self.iterations + 1.)]

# momentum

self.weights = [k.variable(np.zeros(k.get_value(p).shape)) for p in params]

for p, g, m in zip(params, grads, self.weights):

v = self.momentum * m - lr * g # velocity

if self.nesterov:

new_p = p + self.momentum * v - lr * g

else:

new_p = p + v

if p in constraints:

c = constraints[p]

new_p = c(new_p)

return self.updates

def get_config(self):

return

原始碼就不解釋了,接著說優化函式,上面以最常用的隨機 梯度下降法(sgd)說了怎麼用,下面再說說其他的。

時間緊迫,以後在學習

matlab 中的內聯函式 匿名函式和函式函式

f inline x 2 y 3 f 內聯函式 f x,y x 2 y 3 f 2,3 31其實 inline x 2 y 3 等價於inline x 2 y 3 x y 後續可變引數標識引數列表語法結構為 fhandle arglist expression f x,y x 2 y 3f x,y ...

matlab 中的內聯函式 匿名函式和函式函式

f inline x 2 y 3 f 內聯函式 f x,y x 2 y 3 f 2,3 31其實 inline x 2 y 3 等價於inline x 2 y 3 x y 後續可變引數標識引數列表語法結構為 fhandle arglist expression f x,y x 2 y 3f x,y ...

python中的函式 函式定義 函式引數和函式呼叫

我們在程式設計過程中經常會遇到同樣功能的 不斷地出現,使得程式設計成為枯燥無味的複製貼上過程的迴圈。為了找樂子 讓 變得精簡。我們需要函式來幫助我們。函式就是完成特定功能的 塊,本質上是對 的封裝。函式的語法格式為 def 函式名 引數 段 函式體需要注意的是,函式名的命名規則與變數的命名規則一致。...