# Tensorflow深度学习-对布料工艺参数的预测

[En]

Research background: the factory produces a batch of cloth, which will test and record the entire production environment of the cloth, including some basic data such as machine tension, speed, temperature, pressure, machine speed and so on. The produced cloth testing machine will record the parameters of the cloth, including the color of the cloth, gram weight, cutting, light transmission point and so on.

[En]

So with these data, we can predict whether the fabric is qualified through in-depth learning, which should be the following formula.

[En]

According to the experience of the old master who produces the cloth on the spot, he thinks that the pressure, tension and temperature of the production machine may have a great influence on the light transmission point of the cloth, which is judged by experience. Obviously, we need data support. We need a machine model to verify whether this is the case.

1.第一步 我们需要把检测机器记录的历史数据 整理归纳，导出到 csv 文件，方便 我们下一步处理，记录数据用的mongodb 数据库。我们 用python 导出到 csv文件，我们需要 一个透光点值和 对应的张力，压力，温度值。

import pymongo
import json
import csv
import os
from dateutil.parser import *

#################
stime       = '2022-03-02 00:00:00' #&#x5F00;&#x59CB;&#x65F6;&#x95F4;
etime       = '2022-03-10 00:00:00' #&#x7ED3;&#x675F;&#x65F6;&#x95F4;
b_path      = 'b_train.csv';        #&#x5199;&#x5165;&#x7684;&#x6587;&#x4EF6;
mongo_name  = 'tensorflow'          # &#x6570;&#x636E;&#x5E93;&#x540D;&#x79F0;
line_name   = '&#x4E09;&#x53F7;&#x4EA7;&#x7EBF;DeviceHisData' #&#x4EA7;&#x7EBF;&#x540D;&#x79F0;
line_code   = 'U306'                #&#x4EA7;&#x7EBF;code
cut_code    = 'A302'                #cut code
#####################
client = pymongo.MongoClient(host='localhost', port=27017)
db     = client[mongo_name]
#&#x5199;&#x5165;&#x6570;&#x636E;

if os.path.exists('b_path'):
os.makedirs(b_path)

#&#x65F6;&#x95F4;&#x8303;&#x56F4; &#x5148;&#x751F;&#x6210;&#x6570;&#x636E;
myDatetime  = parse(stime)
myDatetime2 = parse(etime)

lin306  = db[line_name].find({'code':line_code,'TimeData': {'$gte':myDatetime,'$lt':myDatetime2}},{"_id": 0,'line':1,'value':1,'code':1,'TimeData':1}).sort("TimeData")   #&#x67E5;&#x8BE2;&#x5168;&#x90E8;
cuts    = db['cutscreendataHis'].find({'type': 'Data','code':cut_code,'Begintime': {'$gte':myDatetime,'$lt':myDatetime2}},{"_id": 0,'type':1,'code':1,'dataCnc':1,'data':1,'Begintime':1}).sort("Begintime") #&#x67E5;&#x8BE2;&#x5168;&#x90E8;

dianshu = []
for line in lin306:  #&#x5FAA;&#x73AF;&#x6253;&#x5370;
TimeData = line['TimeData'].strftime("%Y-%m-%d %H:%M:%S")
dianshu.append(value)

#print("dianshu==",dianshu)
colors_len = len(dianshu)
print("colors_len",colors_len)

### &#x4E2D;&#x95F4;&#x7701;&#x7565; for&#x5FAA;&#x73AF;&#x5904;&#x7406;&#x6570;&#x636E;

with open(b_path, 'w', newline='') as file:
writer = csv.writer(file)
writer.writerows(lists)

print("-----------&#x5BFC;&#x51FA;csv&#x5B8C;&#x6210;------------")


2.第二步 数据预处理，通过 pandas 读取 b_train.csv文件。

dataset_path = 'b_train.csv'

column_names = ['dianshu','a','b','c','d','e','f']
#'o','p','q','r','s','t','u','v','w','x','y','z',

na_values = "?", comment='\t', names=column_names,
sep=",", skipinitialspace=True)
dataset = raw_dataset.copy()

#&#x6570;&#x636E;&#x6E05;&#x6D17; &#x53BB;&#x6389;&#x6CA1;&#x7528;&#x503C;
dataset.isna().sum()
dataset = dataset.dropna()

#&#x6253;&#x5370;&#x6570;&#x636E;&#x8BE6;&#x60C5;
print("dataset.tail() ",dataset.tail());


3.第三步 分出训练数据80%和测试数据20% 并把数据 归一化处理。

#&#x5206;&#x79BB;&#x6570;&#x636E; 80% &#x8BAD;&#x7EC3;&#xFF0C; 20%&#x6D4B;&#x8BD5;
train_dataset = dataset.sample(frac=0.8,random_state=0)
test_dataset  = dataset.drop(train_dataset.index)

#sns.pairplot(train_dataset[['dianshu', 'a', 'b']], diag_kind="kde")
#plt.show() #&#x751F;&#x5B58;&#x56FE;&#x7247;

#&#x603B;&#x4F53;&#x7684;&#x6570;&#x636E;&#x7EDF;&#x8BA1;:
train_stats = train_dataset.describe()
train_stats.pop("dianshu")
train_stats = train_stats.transpose()
#&#x6570;&#x636E;&#x8BE6;&#x60C5;

test_result = test_dataset['dianshu']
train_labels = train_dataset.pop('dianshu')
test_labels  = test_dataset.pop('dianshu')

#&#x5F52;&#x4E00;&#x5316;&#x5904;&#x7406;
def norm(x):
return (x - train_stats['mean']) / train_stats['std']

normed_train_data = norm(train_dataset)
normed_test_data  = norm(test_dataset)

1. 开始建模，我们损失函数需要用到 loss = ‘mae’这个，即平均绝对误差它表示预测值和观测值之间绝对误差的平均值。这个适用于我们的研究对象。
#&#x5F00;&#x59CB;&#x5EFA;&#x6A21;&#x8BAD;&#x7EC3;
def build_model():
model = keras.Sequential([
layers.Dense(64, activation='relu', input_shape=[len(train_dataset.keys())]),
layers.Dense(64, activation='relu'),
layers.Dense(64, activation='relu'),
layers.Dense(1)
])
optimizer = tf.keras.optimizers.RMSprop(0.001)
model.compile(loss='mae', #&#x5747;&#x65B9;&#x8BEF;&#x5DEE;&#xFF08;mae&#xFF09;Mean Absolute Error&#xFF0C;&#x5373;&#x5E73;&#x5747;&#x7EDD;&#x5BF9;&#x8BEF;&#x5DEE;&#xFF1A;&#x5B83;&#x8868;&#x793A;&#x9884;&#x6D4B;&#x503C;&#x548C;&#x89C2;&#x6D4B;&#x503C;&#x4E4B;&#x95F4;&#x7EDD;&#x5BF9;&#x8BEF;&#x5DEE;&#x7684;&#x5E73;&#x5747;&#x503C;&#x3002;
metrics=['mae', 'mse'])
return model

model = build_model() #&#x5EFA;&#x7ACB;&#x6A21;&#x578B;
model.summary() #&#x65B9;&#x6CD5;&#x6765;&#x6253;&#x5370;&#x8BE5;&#x6A21;&#x578B;&#x7684;&#x7B80;&#x5355;&#x63CF;&#x8FF0;&#x3002;


[En]

Let’s take a look at the description information of this model, a total of four layers, including 8833 parameters are enough for us to train 5000 data.

Model: "sequential"
_________________________________________________________________
Layer (type)                 Output Shape              Param #
=================================================================
dense (Dense)                (None, 64)                448
_________________________________________________________________
dense_1 (Dense)              (None, 64)                4160
_________________________________________________________________
dense_2 (Dense)              (None, 64)                4160
_________________________________________________________________
dense_3 (Dense)              (None, 1)                 65
=================================================================
Total params: 8,833
Trainable params: 8,833
Non-trainable params: 0
_________________________________________________________________


5.开始训练100次，并画出训练时mean走向统计图

&#x901A;&#x8FC7;&#x4E3A;&#x6BCF;&#x4E2A;&#x5B8C;&#x6210;&#x7684;&#x65F6;&#x671F;&#x6253;&#x5370;&#x4E00;&#x4E2A;&#x70B9;&#x6765;&#x663E;&#x793A;&#x8BAD;&#x7EC3;&#x8FDB;&#x5EA6;
class PrintDot(keras.callbacks.Callback):
def on_epoch_end(self, epoch, logs):
if epoch % 50 == 0: print('')
print('.', end='')

EPOCHS = 100

history = model.fit(
normed_train_data, train_labels,
epochs=EPOCHS, validation_split = 0.2, verbose=0,
callbacks=[PrintDot()])

def plot_history(history):
hist = pd.DataFrame(history.history)
hist['epoch'] = history.epoch

plt.figure(1)
plt.subplot(211)
plt.xlabel('Epoch')
plt.ylabel('Mean Abs Error') #&#x5E73;&#x5747;&#x7EDD;&#x5BF9;&#x503C;&#x8BEF;&#x5DEE;
plt.plot(hist['epoch'], hist['val_mae'],label = 'Val Error') #&#x5B9E;&#x9645;&#x9519;&#x8BEF;
plt.legend()

plt.figure(2)
plt.subplot(212)
plt.xlabel('Epoch')
plt.ylabel('Mean Square Error [$MPG^2$]') #&#x5747;&#x65B9;&#x8BEF;&#x5DEE;
plt.plot(hist['epoch'], hist['mse'],label='Train Error')
plt.plot(hist['epoch'], hist['val_mse'], label = 'Val Error')
plt.legend()
plt.show()

plt.figure(1)
plt.subplot(222)
plt.xlabel('Epoch')
plt.ylabel('loss and val_loss ') #&#x9519;&#x8BEF;&#x7387;
plt.plot(hist['epoch'], hist['loss'],label='loss Error')
plt.plot(hist['epoch'], hist['val_loss'], label = 'val_loss Error')
plt.legend()
plt.show()
plot_history(history)


[En]

Let’s use the trained model to predict the fitting degree of the actual and predicted values of the test data. is it linear regression?

#&#x9884;&#x6D4B; &#x7684;&#x7ED3;&#x679C; &#x6253;&#x5370;
test_predictions = model.predict(normed_test_data).flatten()

#&#x65B0;&#x56FE; &#x67E5;&#x770B;&#x62DF;&#x5408;&#x6548;&#x679C;&#x56FE;
plt.scatter(test_labels, test_predictions)
plt.xlabel('True Values ')
plt.ylabel('Predictions')
plt.axis('equal')
plt.axis('square')
plt.xlim([0,plt.xlim()[1]])
plt.ylim([0,plt.ylim()[1]])
plt.plot([-100, 100], [-100, 100])
plt.show()


[En]

Printing out the predicted value and the actual recorded value after machine learning, we find that the two data are very close.

[En]

Let’s take a look at the machine model predicts that the average absolute difference is 1.64, which is very low. It shows that the tension, pressure and temperature have a great correlation with the light transmission points of the cloth. The experience of the old master is correct, and machine learning strengthens the verification.

30/30 - 0s - loss: 1.6414 - mae: 1.6414 - mse: 6.5162
Testing set Mean Abs Error: &#xA0;1.64&#xA0;


Original: https://blog.csdn.net/u012997396/article/details/124131121
Author: 悟空大师
Title: Tensorflow深度学习-对布料工艺参数的预测

(0)

### 大家都在看

• #### python 针对二分类问题画roc曲线

代码详解： import numpy as np import matplotlib.pyplot as plt from sklearn.preprocessing import…

人工智能 2023年7月2日
0162
• #### 跟着李沐老师做BERT论文逐段精读（笔记）

论文地址 ； 中文翻译 ； 代码地址 ； 视频地址 ； 本篇大部分内容来源 。只做整理补充，推荐去看李沐老师原视频，讲的真的很好 建议学习顺序：5min全局理解->李沐老师论…

人工智能 2023年6月4日
0179
• #### 目标检测中的损失函数

啊哦~你想找的内容离你而去了哦 内容不存在，可能为如下原因导致： ① 内容还在审核中 ② 内容以前存在，但是由于不符合新 的规定而被删除 ③ 内容地址错误 ④ 作者删除了内容。 可…

人工智能 2023年7月9日
0155
• #### 如何解决kaldi的依赖库mkl安装失败的问题

最近在学习如何使用kaldi进行语音识别。按照进程进行安装部署时发现 Intel MKL库总是失败。 通过搜索大量的资料，但都发现不太适用。现在将失败的症状和解决方法分享一下，希望…

人工智能 2023年5月25日
0144
• #### 数据挖掘 | 实验一 数据的清洗与预处理

文章目录 一、目的与要求 二、实验设备与环境 三、实验内容 * 数据清洗 数据集成 数据变换（统一格式并标准化） 四、实验小结 一、目的与要求 1）了解数据质量问题、掌握常用解决方…

人工智能 2023年6月19日
0216
• #### 使用jupyter中的matplotlib库绘制简单图表4

一、设置图表样式与映射表 （1）使用rc()函数修改图表样式 （2）设置颜色映射表可以使用关键字cmap或者直接调用set_cmap()函数进行设置1、代码 import nump…

人工智能 2023年6月16日
0163
• #### 日积月累，在迷茫彷徨中前进 —— 我的大学经历

想想好久没写过程序人生了，恰逢一位学弟成为了母校的CSDN联合校园大使，为开学季话题征文，不禁回想起四年前，我也是忐忑而又兴奋的等待着大学生活的开始。[TencentCloudSD…

人工智能 2023年6月2日
0132
• #### 15.OpenFeign 总结（springcloud）

2. 如何创建的代理对象？ 当 项 目 在 启 动 时 ， 先 扫 描 ， 然 后 拿 到 标 记 了 @FeignClient 注 解 的 接 口 信 息 ， 由 Reflect…

人工智能 2023年6月27日
0175
• #### 五、Javascript DOM操作

关于dom操作，一般都是document开头 方法解释document.documentElementhtml标签节点document.bodybody 标签节点document….

人工智能 2023年6月27日
0155
• #### SpringBoot集成OpenCV进行图像处理

目录 * – 一、环境部署 – 二、导入依赖 – 三、使用 – 四、注意事项 一、环境部署 *Windows 在OpenCV官网下载…

人工智能 2023年7月19日
0133
• #### yolov5 detect文件参数解释（部分）

人工智能 2023年5月28日
0169
• #### 手动搭建transformer模型进行时序预测，股票预测

手动搭建transformer模型，时序预测 一、数据 股票的数据具有时序性，采用股票数据来进行预测 下载随机一只股票历史数据进行处理，此次选用600243的数据 在这一步直接设定…

人工智能 2023年6月16日
0227
• #### 【图像分类】YOLOv5-6.2全新版本：支持图像分类

前言 众所周知，YOLOv5是一款优秀的目标检测模型，但实际上，它也支持图像分类。在6.1版本中，就暗留了 classify这个参数，可以在做检测的同时进行分类。 官方仓库地址：h…

人工智能 2023年7月3日
0198
• #### YOLOv7训练自己的数据集

目录 1、制作YOLO格式数据集 1.1、数据集 1.2、如何转换为YOLOv7所需的格式? 1.3、如何批量化生成YOLO格式的txt标注 1.4、如何划分YOLO的train、…

人工智能 2023年7月23日
0144
• #### 数据仓库–基本概念和数据定义规范

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

人工智能 2023年7月18日
0173
• #### 语义分割系列6-Unet++（pytorch实现）

目录 Unet++网络 Dense connection deep supervision 模型复现 Unet++ 数据集准备 模型训练 训练结果 Unet++：《UNet++: …

人工智能 2023年7月23日
0163