在TensorFlow優化(蟒蛇)apply_dense
不會得到所謂的神經元的權重(層連接)和偏置權重,但我想在此方法中使用這兩種方法。如何在優化器中獲得偏差和神經元權重?
def _apply_dense(self, grad, weight):
...
例如:具有兩個隱藏層具有兩個神經元和每個偏壓完全連接的神經網絡。
如果我們看一看在第2層,我們在apply_dense
得到一個呼籲神經元的權重:
,並呼籲偏置權重:
但我要麼需要兩個矩陣中的一個調用的apply_dense
或權重矩陣是這樣的:
X_2X_4,B_1X_4,...只是兩個神經元之間的連接權重的符號。因此B_1X_4只是B_1和X_4之間權重的佔位符。
如何做到這一點?
MWE
對於此處的最小工作示例與動量隨機梯度下降優化器的實現。對於每一層來說,來自其他神經元的所有傳入連接的動量被降低到平均值(參見ndims == 2)。我需要的不僅是來自傳入神經元連接的動量值的平均值,而且還來自傳入偏移連接(如上所述)。
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
import tensorflow as tf
from tensorflow.python.training import optimizer
class SGDmomentum(optimizer.Optimizer):
def __init__(self, learning_rate=0.001, mu=0.9, use_locking=False, name="SGDmomentum"):
super(SGDmomentum, self).__init__(use_locking, name)
self._lr = learning_rate
self._mu = mu
self._lr_t = None
self._mu_t = None
def _create_slots(self, var_list):
for v in var_list:
self._zeros_slot(v, "a", self._name)
def _apply_dense(self, grad, weight):
learning_rate_t = tf.cast(self._lr_t, weight.dtype.base_dtype)
mu_t = tf.cast(self._mu_t, weight.dtype.base_dtype)
momentum = self.get_slot(weight, "a")
if momentum.get_shape().ndims == 2: # neuron weights
momentum_mean = tf.reduce_mean(momentum, axis=1, keep_dims=True)
elif momentum.get_shape().ndims == 1: # bias weights
momentum_mean = momentum
else:
momentum_mean = momentum
momentum_update = grad + (mu_t * momentum_mean)
momentum_t = tf.assign(momentum, momentum_update, use_locking=self._use_locking)
weight_update = learning_rate_t * momentum_t
weight_t = tf.assign_sub(weight, weight_update, use_locking=self._use_locking)
return tf.group(*[weight_t, momentum_t])
def _prepare(self):
self._lr_t = tf.convert_to_tensor(self._lr, name="learning_rate")
self._mu_t = tf.convert_to_tensor(self._mu, name="momentum_term")
對於一個簡單的神經網絡:https://raw.githubusercontent.com/aymericdamien/TensorFlow-Examples/master/examples/3_NeuralNetworks/multilayer_perceptron.py(只改變優化的定製SGDmomentum優化)
你需要更加明確。你在打什麼方法?你能給我們一個最小的工作例子嗎? –
我正在實現一個優化器。我添加了一個這樣的優化器的MWE,並描述了我的問題的要求。 – Spen
我不認爲我明白你在問什麼。你在問如何獲得網絡中的權重? –