gpt4 book ai didi

python - 迭代 Tensorflow 中的张量维度

转载 作者:行者123 更新时间:2023-12-05 07:35:34 26 4
gpt4 key购买 nike

我正在尝试从低层次的角度开发一个 seq2seq 模型(我自己创建所有需要的张量)。我正在尝试为模型提供一系列向量作为二维张量,但是,我无法迭代张量的一维以逐个向量地提取向量。有谁知道我可以做些什么来喂养一批载体,然后一个一个地获取它们?

这是我的代码:

batch_size = 100
hidden_dim = 5
input_dim = embedding_dim
time_size = 5



input_sentence = tf.placeholder(dtype=tf.float64, shape=[embedding_dim,None], name='input')
output_sentence = tf.placeholder(dtype=tf.float64, shape=[embedding_dim,None], name='output')

input_array = np.asarray(input_sentence)
output_array = np.asarray(output_sentence)

gru_layer1 = GRU(input_array, input_dim, hidden_dim) #This is a class created by myself


for i in range(input_array.shape[-1]):
word = input_array[:,i]
previous_state = gru_encoder.h_t
gru_layer1.forward_pass(previous_state,word)

这是我得到的错误

TypeError: Expected binary or unicode string, got <tf.Tensor 'input_7:0' shape=(10, ?) dtype=float64>

最佳答案

Tensorflow 会延迟执行。

您通常无法知道向量有多大(句子中的单词、音频样本等...)。常见的做法是将其上限设置为某个相当大的值,然后用空标记填充较短的序列。

执行此操作后,您可以使用切片运算符选择时间切片的数据:

data = tf.placeholder(shape=(batch_size, max_size, numer_of_inputs))
....
for i in range(max_size):
time_data = data[:, i, :]
DoStuff(time_data)

还查找 tf.transpose 以交换批处理和时间索引。在某些情况下,它可以帮助提高性能。

或者考虑像 tf.nn.static_rnntf.nn.dynamic_rnn 这样的东西来为你做样板文件。

关于python - 迭代 Tensorflow 中的张量维度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49492253/

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