Tôi đang cố gắng triển khai kiến trúc sau:
Tôi đang chuyển đầu vào được nối
[xy]
Đi sâu vào mạng nơ-ron, lớp đầu tiên cần phải đối xứng như gợi ý trong hình, lớp này có N_HIDDEN nơ-ron. Tôi bắt đầu với thiết lập sau:
đầu vào = tf.placeholder('float', [Không, 2*NUM_FEATURES])
trọng số = tf.Variable(tf.random_uniform(shape=[2*NUM_FEATURES, N_HIDDEN], minval=-0.0001, maxval=0.0001, dtype=tf.float32))
ẩn = tf.matmul (đầu vào, trọng số)
Tuy nhiên, đoạn mã trên không đối xứng như hình ảnh hiển thị. Nếu tôi đặt trọng số bằng một nửa kích thước thì tôi phải nhân x và y tương ứng.
trọng số = tf.Variable(tf.random_uniform(shape=[NUM_FEATURES, N_HIDDEN], minval=-0,0001, maxval=0,0001, dtype=tf.float32))
Cách chia sẻ các nơ-ron x_k và y_k trong tensorflow là gì?
Tôi không chắc liệu có sự hiểu lầm nào về cách Tensorflow triển khai các mạng thần kinh như của bạn hay không. Như trong hình, các tế bào thần kinh không được xác định rõ ràng. CHÀO
Và CHÀO'
Thể hiện dưới dạng hoạt động.
Trong trường hợp của bạn, bạn có thể chuyển đổi từng h
coi là x1 * v_x1 + x2 * v_x2 + ...
,Tổng của y1 * v_y1 + y2 * v_y2 +...
Và b
.
Trong mã, nó có thể được thực hiện như sau:
input_x = tf.placeholder('float', [Không có, NUM_FEATURES])
input_y = tf.placeholder('float', [Không có, NUM_FEATURES])
trọng_x = tf.Variable(tf.random_uniform(shape=[NUM_FEATURES, N_HIDDEN], dtype=tf.float32)) # v_x
trọng_y_y = tf.Variable(tf.random_uniform(shape=[NUM_FEATURES, N_HIDDEN], dtype=tf.float32)) # v_y
thiên vị = tf.Variable(tf.random_uniform(shape=[N_HIDDEN], dtype=tf.float32))
Hidden_x = tf.matmul(input_x,weights_x)
Hidden_y = tf.matmul(input_y,weights_y)
h = tf.add(hidden_x,hidden_y)
h = tf.add(h, thiên vị)
batch_size = 5
x = np.random.normal(size = [batch_size, NUM_FEATURES])
y = np.random.normal(size = [batch_size, NUM_FEATURES])
phiên = tf.InteractiveSession()
session.run(tf.global_variables_initializer())
session.run(h, Feed_dict = {input_x : x, input_y : y})
Bất cứ khi nào chạyh
node, nó tương đương với việc tính toán tất cả các node trong ảnhCHÀO
.
Vì vậy, không cần phải nối dữ liệu để làm cho nó đối xứng.
Việc sử dụng hai phần giữ chỗ riêng biệt cho các loại đầu vào khác nhau sẽ giúp bạn hiểu cách hoạt động của mạng dễ dàng hơn. Và trọng lượng cũng có thể được tách ra. Trong hình ảnh của bạn, chúng cũng có các nhãn khác nhau:v_x
Và v_y
.
希望对您有所帮助!
Tôi là một lập trình viên xuất sắc, rất giỏi!