Keras:使功能模型接受LSTM的多个批次


import tensorflow as tf
import numpy as np
import tensorflow.keras.layers as layers
import tensorflow.keras as keras
from tensorflow.keras.optimizers import Adam
def get_model():
inputs = layers.Input(batch_shape=(1, 200, 12)) #input

x = layers.LSTM(12, return_sequences=True, stateful=True)(inputs)
outputs = layers.TimeDistributed(layers.Dense(2, activation="softmax"))(x)
model = keras.Model(inputs=inputs, outputs=outputs)
model.compile(loss='categorical_crossentropy', optimizer=Adam(), metrics=['accuracy'])
print(model.summary())
return model
model = get_model()
x_train = np.ones((10,200,12))
x_val = np.ones((10,200,12))
y_train = np.ones((10,200,2))
y_val = np.ones((10,200,2))
history = model.fit(x_train, y_train,
epochs=40,
validation_data=(x_val, y_val),
verbose=2)

给我这个输出

InvalidArgumentError:  [_Derived_]  Specified a list with shape [1,12] from a tensor with shape [10,12]
[[{{node TensorArrayUnstack/TensorListFromTensor}}]]
[[model_19/lstm_47/StatefulPartitionedCall]] [Op:__inference_train_function_78329]

如果我制作x_train和x_val形状(1200,12(,它可以很好地工作。如何使输入对象接受多个批次?

原来我需要指定batch_size,比如…

history = model.fit(x_train, y_train,
epochs=40,
validation_data=(x_val, y_val),
verbose=2,
batch_size=1
)

最新更新