Python 如何将此数据加载到LSTM中?

Python 如何将此数据加载到LSTM中?,python,tensorflow,keras,classification,lstm,Python,Tensorflow,Keras,Classification,Lstm,分类问题: 数据被分成两个文件夹。CSV仅包括数据。 我的示例模型的代码是: model = Sequential() model.add(CuDNNLSTM(3, input_shape=(None, 3), return_sequences=False)) model.add(Dropout(0.1)) model.add(Dense(1, activation='softmax')) 问题1:除了KERA生成器之外,还有其他方法可以控制加载哪些文件吗? 问题2:除了batchsize为1

分类问题: 数据被分成两个文件夹。CSV仅包括数据。 我的示例模型的代码是:

model = Sequential()
model.add(CuDNNLSTM(3, input_shape=(None, 3), return_sequences=False))
model.add(Dropout(0.1))
model.add(Dense(1, activation='softmax'))
问题1:除了KERA生成器之外,还有其他方法可以控制加载哪些文件吗?
问题2:除了batchsize为1之外,是否还有其他方法可以使可变时间步成为可能? 问题3:这是LSTM接受可变时间步长的正确代码吗?如果没有,请建议更好的方法

input_shape=(None, 3)
问题1和2 案例1,你的数据符合你的记忆 只需将数据加载到阵列中并填充数据:

将熊猫作为pd导入
将numpy作为np导入
导入操作系统
从keras.preprocessing.sequence导入pad_序列
#您的类文件夹-选择正确的名称
folder0=“class0”
folder1=“class1”
#x和y最初作为列表
fileContents=[]
fileClasses=[]
#每个目录中的文件列表
files0=os.listdir(folder0)
files1=os.listdir(folder1)
#加载类0的数据
对于文件0中的f:
f=文件夹0+“/”+f
如果f中的“.csv”:
frame=pd.read_csv(f)#如果文件中没有标题,则使用header=None
fileContents.append(frame.values)
fileClasses.append(0)#追加正确的类
打印(帧值)
#加载类1的数据
对于文件1中的f:
f=文件夹1+“/”+f
如果f中的“.csv”:
帧=pd.read\U csv(f)
fileContents.append(frame.values)
fileClasses.append(1)#追加正确的类
打印(帧值)
#填充序列,使它们具有相同的长度,并转换为numpy
#为您选择最佳值,例如,我选择了0
paddedSequences=pad_序列(fileContents,padding='post',value=0)
x_序列=np.阵列(填充序列)
y_train=np.array(文件类)
稍后,您需要在模型中使用
掩蔽(0)
层来忽略用于填充的0值

案例2,你的数据不符合你的记忆 创建Python生成器或
keras.utils.Sequence
以与
model.fit\u生成器()一起使用

加载数据的原理与案例1完全相同,但您将以较小的批量进行加载

这也是一个很好的机会,可以按长度分隔文件,并输出类似长度的批处理(这意味着减少无用的填充)

有很多答案和教程解释如何创建这两个选项。例如,Keras文档教导
序列

问题3
完全正确。

谢谢您的回答!我感谢你的详细解释。代码和您关于批量大小、生成器等的提示让我清楚地了解了Keras的输入。