为keras model.fit创建一个数据集



我有两个列表和一个Keras模型

inputs  = [NumPyArrIn_1,...,NumPyArrIn_n]   # each NumPyArrIn_i is an input
targets = [NumPyArrTar_1,...,NumPyArrTar_N] # each NumPyArrTar_i is a target 
# NumPyArrIn_i

该模型有一个单个输入。inputs表示我的数据集。换句话说,每个epoch将在inputs列表上运行。我希望通过呼叫model.fit来训练我的模特。据我从文档中了解,我可以用以下方式训练模型:

model.fit(x=inputs, 
y=targets, 
steps_per_epoch = n, 
callbacks=callbacks,
epochs=1,
shuffle=False)

当我尝试运行它时,观察到以下错误:

ValueError: Error when checking model target: the list of Numpy arrays that you are passing to your 
model is not the size the model expected. Expected to see 1 array(s), for inputs ['Logits'] but 
instead got the following list of 50 arrays: [array([[0., 0., 0., ..., 0., 0., 0.],

Is不希望获得一个输入列表和另一个目标列表。以下线路正常工作:

model.fit(x=inputs[0], 
y=targets[0], 
steps_per_epoch = n, 
callbacks=callbacks,
epochs=1,
shuffle=False)

传递数据集的正确方法是什么

我推荐以下方法(请注意第13行中的"介绍"形状,使用",",但在此之前不使用"(:

import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
import numpy as np
number_of_cases=100
number_of_features_in=70
number_of_features_out=55
inputs=np.random.rand(number_of_cases,number_of_features_in)
targets=np.random.rand(number_of_cases,number_of_features_out)
input_for_model=keras.Input(shape=(number_of_features_in,))
one_layer_of_network=layers.Dense(1)
output_from_model=one_layer_of_network(input_for_model)
model=keras.Model(inputs=input_for_model,outputs=output_from_model)
model.compile(loss='MeanSquaredError',optimizer='adam',metrics=['accuracy'])
n=1
model.fit(x=inputs,
y=targets,
steps_per_epoch = n,
epochs=1,
shuffle=False)
model.summary()

最新更新