无法将Tensorflow从1.0转换为Tensorflow 2.0

无法将Tensorflow从1.0转换为Tensorflow 2.0,tensorflow,keras,Tensorflow,Keras,我有tensorflow 1.0版本代码,无法使用以下语法转换tensorflow 2.0。 你能帮我一下吗 (A) 问题-1)如何对Tf2.0上的lstm_单元使用drop-out (B) Q-2)当我使用上述语法时,我得到一个错误“LSTM单元格没有TF2.0的零状态单元格” 如何初始化lSTM单元 C) 如何为TF2.0使用tf.keras.layers.RNN单元格对于RNN退出,已将DropOutRapper移动到 我想这是零州的新名字 您应该更精确地说明您想用RNN做什么tf.ker

我有tensorflow 1.0版本代码,无法使用以下语法转换tensorflow 2.0。 你能帮我一下吗

(A)

问题-1)如何对Tf2.0上的lstm_单元使用drop-out

(B)

Q-2)当我使用上述语法时,我得到一个错误
“LSTM单元格没有TF2.0的零状态单元格”

如何初始化lSTM单元


C) 如何为TF2.0使用tf.keras.layers.RNN单元格对于RNN退出,已将DropOutRapper移动到

我想这是零州的新名字


您应该更精确地说明您想用RNN做什么
tf.keras.layers.RNN
是循环层的基类,不应按原样使用。相反,您应该使用一些子类,如,或,或创建您自己的子类。请看上的教程。

对于RNN辍学,已将
DropOutRapper
移动到

我想这是零州的新名字

您应该更精确地说明您想用RNN做什么
tf.keras.layers.RNN
是循环层的基类,不应按原样使用。相反,您应该使用一些子类,如,或,或创建您自己的子类。请看上的教程。

谢谢@AlexisBRENON。。 这是我的密码。如果我做错了,请告诉我

lstm_cell =tf.keras.layers.LSTM(units=hidden_unit)
    lstm_cell = tf.nn.RNNCellDropoutWrapper(lstm_cell, output_keep_prob=self.dropout_keep_prob)
    self._initial_state = lstm_cell.get_initial_state(self.batch_size, tf.float32)
    inputs = [tf.squeeze(input_, [1]) for input_ in tf.split(pooled_concat,num_or_size_splits=int(reduced),axis=1)]

    outputs, state_size =tf.keras.layers.RNN(lstm_cell, inputs, initial_state=self._initial_state, return_sequences=self.real_len)

    ==>>> Want to  Collect the appropriate last words into variable output (dimension = batch x embedding_size)
    output = outputs[0]
错误:- self.\u initial\u state=lstm\u cell.get\u initial\u state(self.batch\u size,tf.float32) ValueError:维度0的切片索引0超出范围。对于输入形状为[0]、[1]、[1]、[1]和[1]且具有计算输入张量的“跨步切片”(op:“跨步切片”):输入[1]=,输入[2]=,输入[3]=。

谢谢@AlexisBRENON。。 这是我的密码。如果我做错了,请告诉我

lstm_cell =tf.keras.layers.LSTM(units=hidden_unit)
    lstm_cell = tf.nn.RNNCellDropoutWrapper(lstm_cell, output_keep_prob=self.dropout_keep_prob)
    self._initial_state = lstm_cell.get_initial_state(self.batch_size, tf.float32)
    inputs = [tf.squeeze(input_, [1]) for input_ in tf.split(pooled_concat,num_or_size_splits=int(reduced),axis=1)]

    outputs, state_size =tf.keras.layers.RNN(lstm_cell, inputs, initial_state=self._initial_state, return_sequences=self.real_len)

    ==>>> Want to  Collect the appropriate last words into variable output (dimension = batch x embedding_size)
    output = outputs[0]
错误:- self.\u initial\u state=lstm\u cell.get\u initial\u state(self.batch\u size,tf.float32)
ValueError:维度0的切片索引0超出范围。对于输入形状为[0]、[1]、[1]、[1]、[1]且具有计算输入张量的“跨步切片”(op:“跨步切片”):输入[1]=,输入[2]=,输入[3]=。

输出,状态大小=tf.keras.layers.RNN(lstm\u单元格,输入,初始状态=self.\u初始状态,返回序列=self.real\len)我想将适当的最后一个字收集到变量输出中(维度=批次x嵌入大小)使用RNN返回输出单元格输出=输出[0]输出,状态大小=tf.keras.layers.RNN(lstm\u单元格,输入,初始状态=self.\u初始状态,返回序列=self.real\u len)我想将适当的最后一个字收集到变量输出中(维度=批次x嵌入大小)使用RNN返回输出单元输出=输出[0]如果回答了最初的问题,我建议为您的新错误打开一个新问题。顺便说一句,您应该提供一个最小的可复制示例。
hidden\u unit
self.real\u len
等的值是多少。此外,您正在将
rnncelldropoutrapper
添加到
LSTM
层,而不是添加到
 LSTMCell
(我不知道有什么区别),你确定你在做什么吗?最后,你可能应该使用一个
输入
层(带有定义的
输入形状
)允许TF跟踪LSTM层的形状。如果回答了最初的问题,我建议为新错误打开一个新问题。顺便说一句,您应该提供一个最小的可复制示例。
hidden\u unit
self.real\u len
等的值是多少。此外,您正在添加一个
rncellDropOutrapper
LSTM
层而不是
LSTMCell
(我不知道区别),你确定你要做什么吗?最后,你可能应该使用
Input
层(定义了
Input\u shape
)来允许TF跟踪你的LSTM层的形状。
lstm_cell =tf.keras.layers.LSTM(units=hidden_unit)
    lstm_cell = tf.nn.RNNCellDropoutWrapper(lstm_cell, output_keep_prob=self.dropout_keep_prob)
    self._initial_state = lstm_cell.get_initial_state(self.batch_size, tf.float32)
    inputs = [tf.squeeze(input_, [1]) for input_ in tf.split(pooled_concat,num_or_size_splits=int(reduced),axis=1)]

    outputs, state_size =tf.keras.layers.RNN(lstm_cell, inputs, initial_state=self._initial_state, return_sequences=self.real_len)

    ==>>> Want to  Collect the appropriate last words into variable output (dimension = batch x embedding_size)
    output = outputs[0]