警告:tensorflow:为输入张量(“input_5:0”,shape=(20,37,42),dtype=float32)构造了形状(20,37,42)的模型,但在形状不兼容的输入上调用了该模型(无,37)
你好!!这里是深入学习的地方。。。我在使用LSTM层时遇到问题。 输入是一个长度为37的浮点数组,包含2个浮点,长度为35的一个热数组转换为浮点。输出是长度为19的数组,包含0和1。正如标题所示,我在重塑输入数据以适应模型方面遇到了困难,我甚至不确定哪些输入维度会被视为“兼容”
import numpy as np
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
import random
inputs, outputs = [], []
for x in range(10000):
tempi, tempo = [], []
tempi.append(random.random() - 0.5)
tempi.append(random.random() - 0.5)
for x2 in range(35):
if random.random() > 0.5:
tempi.append(1.)
else:
tempi.append(0.)
for x2 in range(19):
if random.random() > 0.5:
tempo.append(1.)
else:
tempo.append(0.)
inputs.append(tempi)
outputs.append(tempo)
batch = 20
timesteps = 42
training_units = 0.85
cutting_point_i = int(len(inputs)*training_units)
cutting_point_o = int(len(outputs)*training_units)
x_train, x_test = np.asarray(inputs[:cutting_point_i]), np.asarray(inputs[cutting_point_i:])
y_train, y_test = np.asarray(outputs[:cutting_point_o]), np.asarray(outputs[cutting_point_o:])
input_layer = keras.Input(shape=(37,timesteps),batch_size=batch)
dense = layers.LSTM(150, activation="sigmoid", return_sequences=True)
x = dense(input_layer)
hidden_layer_2 = layers.LSTM(150, activation="sigmoid", return_sequences=True)(x)
output_layer = layers.Dense(10, activation="softmax")(hidden_layer_2)
model = keras.Model(inputs=input_layer, outputs=output_layer, name="my_model"
模型的正确输入为(20、37、42)。 注意:这里20是您明确指定的批次大小
代码:
模型架构:
您可以清楚地看到输入大小
要运行的代码:
注意:无论指定的批次大小如何,都必须在model.fit()命令中指定相同的批次大小
输出:
这里有几个问题
(n, time steps, features)
input_shape
中,时间步长维度位于第一位,而不是最后一位我所做的:
input_shape
中排列了维度return_sequences=False
完全修复了生成数据的示例:
相关问题 更多 >
编程相关推荐