TensorFlow 2.0: использование GradientTape для ручного обновления параметров

#python #tensorflow #eager

#python #tensorflow #жаждущий

Вопрос:

Я пытаюсь создать простую однослойную нейронную сеть, используя GradientTape из TensorFlow 2.0, и обновить все параметры вручную, но, похоже, это не работает.

Вот одна итерация цикла обучения:

 W = tf.Variable(tf.random.normal([784,10], dtype = tf.float64, stddev=1))
b = tf.Variable(tf.random.normal([10], dtype = tf.float64))

X = x_train[0:mini_batch_size]
Y = y_train[0:mini_batch_size]

with tf.GradientTape() as tape:
    Y_pred = tf.sigmoid(tf.matmul(X,W) b)
    loss = tf.reduce_mean(tf.reduce_sum((Y-Y_pred)**2, axis = 1))
dW, db = tape.gradient(loss, [W,b])
  

Если я распечатаю dW, это просто все нули.
И ручное обновление W = W — 1.0 * dW выдает неподдерживаемые типы операндов для ошибок *: ‘float’ и ‘NoneType’.