gpt4 book ai didi

tensorflow - 在 tf.contrib.rnn.DropoutWrapper 中使用 variational_recurrent

转载 作者:行者123 更新时间:2023-12-02 03:02:20 28 4
gpt4 key购买 nike

tf.contrib.rnn.DropoutWrapper的api中,我正在尝试设置 variational_recurrent=True,在这种情况下,input_size 是必需的。如前所述,input_size 是包含输入张量的深度TensorShape 对象。

depth(s) 令人困惑,请问它是什么?它只是我们可以通过 tf.shape() 获得的张量的形状吗?或者图像特殊情况的 channel 数?但是我的输入张量不是图像。

而且我不明白为什么 variational_recurrent=True 时需要 dtype

谢谢!

最佳答案

tf.TensorShape([200, None, 300]) 的 Inpput_size 仅为 300

玩这个例子。

import os
os.environ["CUDA_DEVICE_ORDER"]="PCI_BUS_ID" # see TF issue #152
os.environ["CUDA_VISIBLE_DEVICES"]="1"
import tensorflow as tf
import numpy as np


n_steps = 2
n_inputs = 3
n_neurons = 5
keep_prob = 0.5
learning_rate = 0.001


X = tf.placeholder(tf.float32, [None, n_steps, n_inputs])
X_seqs = tf.unstack(tf.transpose(X, perm=[1, 0, 2]))

basic_cell = tf.contrib.rnn.BasicLSTMCell(num_units=n_neurons)
basic_cell_drop = tf.contrib.rnn.DropoutWrapper(
basic_cell,
input_keep_prob=keep_prob,
variational_recurrent=True,
dtype=tf.float32,
input_size=n_inputs)

output_seqs, states = tf.contrib.rnn.static_rnn(
basic_cell_drop,
X_seqs,
dtype=tf.float32)
outputs = tf.transpose(tf.stack(output_seqs), perm=[1, 0, 2])

init = tf.global_variables_initializer()

X_batch = np.array([
# t = 0 t = 1
[[0, 1, 2], [9, 8, 7]], # instance 1
[[3, 4, 5], [0, 0, 0]], # instance 2
[[6, 7, 8], [6, 5, 4]], # instance 3
[[9, 0, 1], [3, 2, 1]], # instance 4
])

with tf.Session() as sess:
init.run()
outputs_val = outputs.eval(feed_dict={X: X_batch})


print(outputs_val)

有关更多详细信息,请参阅:https://github.com/tensorflow/tensorflow/issues/7927

关于tensorflow - 在 tf.contrib.rnn.DropoutWrapper 中使用 variational_recurrent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44936825/

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