gpt4 book ai didi

tensorflow - 在 Tensorflow 中将 3 阶张量与 2 阶张量相乘

转载 作者:行者123 更新时间:2023-12-03 23:53:07 24 4
gpt4 key购买 nike

给定一个 3 级张量:

sentence_max_length = 5
batch_size = 3
n_hidden = 10
n_classes = 2
x = tf.constant(np.reshape(np.arange(150),(batch_size,sentence_max_length, n_hidden)), dtype = tf.float32)

和一个 2 级张量:
W = tf.constant(np.reshape(np.arange(20), (n_hidden, n_classes)), dtype = tf.float32)

和一个 1 级偏置张量:
b = tf.constant(np.reshape(np.arange(5), (n_classes), dtype = tf.float32))

我想知道 x 的最后两个轴如何来自 W这样得到的向量 Z将是形状 (batch_size, max_length, n_classes)尽管在图形创建过程中不会知道 batch_size,但为了演示目的,我只是在此处为其指定了一个值

所以要澄清:
Z[0] = tf.matmul(x[0,:,:], W) + b
使 Wb在所有批次之间共享。这样做的原因是我正在尝试使用 outputtf.dynamic_rnn由此输出的形状为 (batch_size, sentence_max_length, n_hidden)并在 output 上再建一层共享权重 Wb .

最佳答案

一种方法可能是......

import tensorflow as tf
import numpy as np
from tensorflow.python.layers.core import Dense

sentence_max_length = 5
batch_size = 3
n_hidden = 10
n_classes = 2
x = tf.constant(np.reshape(np.arange(150),(batch_size,sentence_max_length, n_hidden)), dtype = tf.float32)

linear_layer = Dense(n_classes, use_bias=True) #required projection value
z = linear_layer(x)

with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
res = sess.run(z)

res.shape
(3, 5, 2)

在内部,密集层创建可训练的 W & b 变量。并且,它使用standard_ops.tensordot 操作将最后一个维度转换为投影值。更多详情,请引用源代码 here .

关于tensorflow - 在 Tensorflow 中将 3 阶张量与 2 阶张量相乘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44171977/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com