如何使用 tensorflow 创建此自定义 ANN?

How to create this custom ANN using tensorflow?

我正在尝试使用 tensorflow 创建此自定义 ANN。这是玩具网络的图像和代码。

import tensorflow as tf
import numpy as np

in = np.array([1, 2, 3, 4], , dtype="float32")
y_true = np.array([10, 11], , dtype="float32")


# w is vector of weights
# y_pred = np.array([in[0]*w[0]+in[1]*w[0]], [in[2]*w[1]+in[3]*w[1]] )
# y_pred1 = 1 / (1 + tf.math.exp(-y_pred)) # sigmoid activation function

def loss_fun(y_true, y_pred1):
    loss1 = tf.reduce_sum(tf.pow(y_pred1 - y_true, 2))   

# model.compile(loss=loss_fun,  optimizer='adam', metrics=['accuracy'])

这个网络的输出转到右边的另一个 ANN,我知道这些东西,但不知道如何创建连接、更新 wy_pred 和编译模型。有帮助吗?

像这样的东西应该可以工作

import tensorflow as tf
import numpy as np

def y_pred(x, w):
    return [x[0]*w[0]+x[1]*w[0], x[2]*w[1]+x[3]*w[1]]

def loss_fun(y_true, y_pred):
    return tf.reduce_sum(tf.pow(y_pred - y_true, 2))
        
x = np.array([1, 2, 3, 4], dtype="float32")
y_true = np.array([10, 11], dtype="float32")
w = tf.Variable(initial_value=np.random.normal(size=(2)), name='weights', dtype=tf.float32)
xt = tf.convert_to_tensor(x)
yt = tf.convert_to_tensor(y_true)
sgd_opt = tf.optimizers.SGD()
training_steps = 100
display_steps = 10
for step in range(training_steps):
    with tf.GradientTape() as tape:
        tape.watch(w)
        yp = y_pred(xt, w)
        loss = loss_fun(yt, yp)
    dl_dw = tape.gradient(loss, w)
    sgd_opt.apply_gradients(zip([dl_dw], [w]))
    if step % display_steps == 0:
        print(loss, w)