import numpy as np
import tensorflow as tp
# Importing imdb dataset
from tensorflow.keras.datasets import imdb
from tensorflow.keras.preprocessing import sequence
# The sequence module in tensorflow.keras.preprocessing provides utilities for preprocessing sequence data, such as text or time-series data.
from tensorflow.keras.models import Sequential
# The sequence module in tensorflow.keras.preprocessing provides utilities for preprocessing sequence data, such as text or time-series data.
from tensorflow.keras.layers import Embedding, SimpleRNN, Dense
# Define the model
model = Sequential()
# Add the Embedding layer
model.add(Embedding(1000, 128)) # Adjust the vocabulary size (1000) as needed
# Print the summary of the model to check the parameters
model.summary()
# Add the SimpleRNN layer
model.add(SimpleRNN(128, activation='relu'))
# Add the Dense output layer
model.add(Dense(1, activation='sigmoid'))
# Print the model layers
print(model.layers)
# Print the summary to check the parameters
model.summary()
我对张量流非常陌生。我正在尝试使用 simpleRNN 创建一个模型。这里有什么问题。我得到的可训练参数为 0
总参数:0 (0.00 B) 可训练参数:0 (0.00 B) 不可训练参数:0 (0.00 B)
您面临的可训练参数为 0 的问题可能是由于嵌入层缺少输入形状规范造成的。嵌入层需要定义输入形状,以便它知道如何处理序列输入。
嵌入层的输入形状: 嵌入层应具有与形状匹配的输入形状 您的输入数据。通常,对于文本分类问题,这 将是单词数(词汇量)和长度 输入序列(例如,每个评论的字数)。
修复模型:
在Embedding层添加input_length参数来指定 输入序列的长度。例如,如果每个评论有 500 换句话说,你可以设置 input_length=500
import numpy as np
import tensorflow as tf
# Importing imdb dataset
from tensorflow.keras.datasets import imdb
from tensorflow.keras.preprocessing import sequence
# The sequence module in tensorflow.keras.preprocessing provides utilities for preprocessing sequence data, such as text or time-series data.
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Embedding, SimpleRNN, Dense
# Define the model
model = Sequential()
# Add the Embedding layer with input length
model.add(Embedding(1000, 128, input_length=500)) # Adjust the input length (500) based on your input data
# Add the SimpleRNN layer
model.add(SimpleRNN(128, activation='relu'))
# Add the Dense output layer
model.add(Dense(1, activation='sigmoid'))
# Print the model summary to check the parameters
model.summary()
嵌入层现在的 input_length 为 500,这指定每个输入序列(例如评论)有 500 个单词。 该模型现在将具有可训练的参数,因为嵌入层需要学习权重矩阵以将词汇索引映射到指定大小 (128) 的向量。 这应该可以解决可训练参数为 0 的问题。