Transformer-based CNNs神经网络预测模型

本文介绍了一个结合Transformer和卷积神经网络(CNN)的预测模型。首先,通过预处理从文本文件中提取数据,然后构建包含多层CNN和Transformer注意力机制的模型。模型经过训练和验证后,展示损失变化并进行预测。此外,提供了GUI界面供用户输入数据并保存预测结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import os
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from tensorflow.keras.layers import Conv1D, MaxPooling1D, Flatten, Dense, Dropout, Input, GlobalMaxPooling1D
from tensorflow.keras.optimizers import Adam
from tensorflow.keras.callbacks import EarlyStopping, ReduceLROnPlateau
from tensorflow.keras.layers import MultiHeadAttention, LayerNormalization
from tensorflow.keras.models import Model
import tkinter as tk
from tkinter import messagebox, filedialog
from PIL import Image, ImageTk
from datetime import datetime


# 数据预处理函数
def prepare_data(input_folder, output_file, columns_to_read=None):
if not os.path.exists(input_folder):
print(f"指定的文件夹不存在: {input_folder}")
return

files = [file for file in os.listdir(input_folder) if file.endswith('.txt')]
if not files:
print(f"在文件夹 {input_folder} 中没有找到任何.txt文件。")
return

combined_df = pd.DataFrame()

for file in files:
file_path = os.path.join(input_folder, file)
try:
with open(file_path, 'r', encoding='utf-8') as f:
lines_to_keep = []
for line in f:
if '送料操作' in line:
continue
else:
lines_to_keep.append(line)

temp_file_path = 'temp.txt'
with open(temp_file_path, 'w', encoding='utf-8') as temp_file:
temp_file.writelines(lines_to_keep)

tbl = pd.read_csv(temp_file_path, header=0, usecols=columns_to_read, sep=r'\s+')
tbl = tbl[pd.to_numeric(tbl.iloc[:, 0], errors='coerce').notnull()]

if not tbl.empty:
combined_df = pd.concat([combined_df, tbl], ignore_index=True)

except Exception as e:
print(f"处理文件 {file_path} 时发生错误: {e}")
continue

if combined_df.empty:
print("提取的数据为空,无法写入文件。")
return

combined_df.to_csv(output_file, index=False)
print(f"数据已写入 {output_file}")
return output_file


# 模型构建函数
def build_model(input_shape):
inputs = Input(shape=input_shape)

cnn_output = Conv1D(64, 3, padding='same', activation='rel

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值