张量流值错误:输入与图层不兼容



我目前正在尝试用张量流训练我的第一个模型。为此,我标记了数据:

tlabelstrain = ops.convert_to_tensor(label_train_data, dtype=dtypes.int32)
tdatatrain = ops.convert_to_tensor(data_train_data)
labeled_train_data = tf.data.Dataset.from_tensor_slices((tdatatrain, tlabelstrain))

训练数据来自 499 个文件,其中包含 300*13 个特征。 这 499 个文件中的每一个在 [1,2,3,4,5,6,7] 中都有一个标签。

如果我这样做print(labeled_train_data)我会得到这个:

<TensorSliceDataset shapes: ((300, 13), ()), types: (tf.float64,tf.int32)>

然后我尝试创建一个模型并对其进行训练:

model = tf.keras.Sequential()
model.add(layers.LSTM(128, input_shape=(300, 13), activation='relu', return_sequences=True))
model.add(layers.Dropout(0.2))
model.add(layers.LSTM(128, activation='relu'))
model.add(layers.Dropout(0.2))
model.add(layers.Dense(32, activation='relu'))
model.add(layers.Dropout(0.2))
model.add(layers.Dense(7, activation='softmax'))
model.compile(loss=tf.keras.losses.BinaryCrossentropy(from_logits=True),
optimizer=tf.keras.optimizers.Adam(1e-4),
metrics=['accuracy'])
model.fit(labeled_train_data, epochs=3)

如果我运行它,我会收到一个值错误:

值错误:图层 sequential_12 的输入 0 与 图层:预期 NDIM=3,找到 NDIM=2。收到完整形状: [300, 13]

我想我在输入的形状上搞砸了一些东西,但我不知道我在哪里做的

感谢您的帮助!

我想你把batch_size留在那里。当您使用以下方法指定它时,它是否有效:

model.add(layers.LSTM(128, input_shape=(None, 300, 13), activation='relu', return_sequences=True))

相关内容

最新更新