如何用Keras读取TXT数据集,训练参数少于40的全连接神经网络(仅用前100行)
使用Keras读取TXT数据集(前100行)并构建轻量全连接分类器
步骤1:读取TXT数据集的前100行
以下提供两种适配不同数据格式的读取方式:
方式一:NumPy快速读取(适用于规整的数值型数据)
假设你的TXT数据为逗号分隔,最后一列为分类标签:
import numpy as np # 仅读取前100行,自动完成数值转换 data = np.genfromtxt('your_dataset.txt', delimiter=',', max_rows=100) X = data[:, :-1] # 提取所有行的特征列(除最后一列) y = data[:, -1] # 提取所有行的标签列(最后一列)
方式二:纯Python逐行读取(适用于格式特殊的数据集)
如果数据格式不规整,可手动处理每行内容:
import numpy as np X, y = [], [] with open('your_dataset.txt', 'r', encoding='utf-8') as f: for line_idx, line in enumerate(f): if line_idx >= 100: # 终止读取,仅保留前100行 break # 按实际分隔符拆分(这里用逗号,可按需修改) elements = line.strip().split(',') # 转换特征为浮点数、标签为整数(根据数据类型调整) X.append([float(elem) for elem in elements[:-1]]) y.append(int(elements[-1])) # 转换为Keras支持的NumPy数组格式 X = np.array(X) y = np.array(y)
步骤2:构建参数少于40的全连接分类器
全连接层参数计算公式:(输入维度 × 神经元数) + 神经元数(包含偏置项)。需控制总参数在40以内:
假设输入特征维度为10、分类类别数为2,示例模型如下:
from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense # 搭建轻量全连接模型 model = Sequential([ # 隐藏层:2个神经元,ReLU激活,输入维度匹配特征数 Dense(2, activation='relu', input_shape=(10,)), # 输出层:对应分类类别数,softmax输出概率分布 Dense(2, activation='softmax') ]) # 总参数计算:(10×2+2) + (2×2+2) = 22 + 6 = 28(远小于40) model.summary() # 编译模型 model.compile( optimizer='adam', loss='sparse_categorical_crossentropy', # 标签为整数时使用 # 若标签是one-hot编码,改用loss='categorical_crossentropy' metrics=['accuracy'] ) # 启动训练 model.fit(X, y, epochs=10, batch_size=8)
关键注意事项
- 若输入特征维度或分类类别数不同,需调整神经元数量,确保总参数不超过40
- 确保TXT数据无缺失值、格式统一,否则需在读取环节添加异常处理逻辑
- 标签类型需与损失函数匹配:整数标签用
sparse_categorical_crossentropy,one-hot标签用categorical_crossentropy
内容的提问来源于stack exchange,提问作者Maria Ferreira
相关产品推荐
相关产品推荐

