1474 lines
62 KiB
Plaintext
1474 lines
62 KiB
Plaintext
|
{
|
|||
|
"cells": [
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 1,
|
|||
|
"id": "6b84fefd-5936-4da4-ab6b-5b944329ad1d",
|
|||
|
"metadata": {},
|
|||
|
"outputs": [],
|
|||
|
"source": [
|
|||
|
"import os\n",
|
|||
|
"os.environ['CUDA_DEVICE_ORDER'] = 'PCB_BUS_ID'\n",
|
|||
|
"os.environ['CUDA_VISIBLE_DEVICES'] = '0, 1'"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 2,
|
|||
|
"id": "9cf130e3-62ef-46e0-bbdc-b13d9d29318d",
|
|||
|
"metadata": {},
|
|||
|
"outputs": [],
|
|||
|
"source": [
|
|||
|
"import pandas as pd\n",
|
|||
|
"import numpy as np\n",
|
|||
|
"from sklearn.model_selection import train_test_split\n",
|
|||
|
"import matplotlib.pyplot as plt\n",
|
|||
|
"#新增加的两行\n",
|
|||
|
"from pylab import mpl\n",
|
|||
|
"# 设置显示中文字体\n",
|
|||
|
"mpl.rcParams[\"font.sans-serif\"] = [\"SimHei\"]\n",
|
|||
|
"\n",
|
|||
|
"mpl.rcParams[\"axes.unicode_minus\"] = False"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 3,
|
|||
|
"id": "752381a5-0aeb-4c54-bc48-f9c3f8fc5d17",
|
|||
|
"metadata": {},
|
|||
|
"outputs": [],
|
|||
|
"source": [
|
|||
|
"data = pd.read_csv('./data/20240102/train_data.csv')"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 4,
|
|||
|
"id": "04b177a7-2f02-4e23-8ea9-29f34cf3eafc",
|
|||
|
"metadata": {},
|
|||
|
"outputs": [],
|
|||
|
"source": [
|
|||
|
"out_cols = [x for x in data.columns if '碳材料' in x]"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 5,
|
|||
|
"id": "31169fbf-d78e-42f7-87f3-71ba3dd0979d",
|
|||
|
"metadata": {},
|
|||
|
"outputs": [
|
|||
|
{
|
|||
|
"data": {
|
|||
|
"text/plain": [
|
|||
|
"['碳材料结构特征-比表面积', '碳材料结构特征-总孔体积', '碳材料结构特征-微孔体积', '碳材料结构特征-平均孔径']"
|
|||
|
]
|
|||
|
},
|
|||
|
"execution_count": 5,
|
|||
|
"metadata": {},
|
|||
|
"output_type": "execute_result"
|
|||
|
}
|
|||
|
],
|
|||
|
"source": [
|
|||
|
"out_cols"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 6,
|
|||
|
"id": "a40bee0f-011a-4edb-80f8-4e2f40e755fd",
|
|||
|
"metadata": {},
|
|||
|
"outputs": [],
|
|||
|
"source": [
|
|||
|
"train_data = data.dropna(subset=out_cols).fillna(0)"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 7,
|
|||
|
"id": "535d37b6-b9de-4025-ac8f-62f5bdbe2451",
|
|||
|
"metadata": {},
|
|||
|
"outputs": [
|
|||
|
{
|
|||
|
"name": "stderr",
|
|||
|
"output_type": "stream",
|
|||
|
"text": [
|
|||
|
"2024-01-04 16:14:39.388684: I tensorflow/stream_executor/platform/default/dso_loader.cc:53] Successfully opened dynamic library libcudart.so.11.0\n"
|
|||
|
]
|
|||
|
}
|
|||
|
],
|
|||
|
"source": [
|
|||
|
"import tensorflow as tf\n",
|
|||
|
"from tensorflow import keras\n",
|
|||
|
"from tensorflow.keras import layers\n",
|
|||
|
"import tensorflow.keras.backend as K"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 8,
|
|||
|
"id": "c2318ce6-60d2-495c-91cd-67ca53609cf8",
|
|||
|
"metadata": {},
|
|||
|
"outputs": [
|
|||
|
{
|
|||
|
"name": "stdout",
|
|||
|
"output_type": "stream",
|
|||
|
"text": [
|
|||
|
"WARNING:tensorflow:From /tmp/ipykernel_43672/337460670.py:1: is_gpu_available (from tensorflow.python.framework.test_util) is deprecated and will be removed in a future version.\n",
|
|||
|
"Instructions for updating:\n",
|
|||
|
"Use `tf.config.list_physical_devices('GPU')` instead.\n"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"name": "stderr",
|
|||
|
"output_type": "stream",
|
|||
|
"text": [
|
|||
|
"2024-01-04 16:14:40.311876: I tensorflow/core/platform/cpu_feature_guard.cc:142] This TensorFlow binary is optimized with oneAPI Deep Neural Network Library (oneDNN) to use the following CPU instructions in performance-critical operations: AVX2 AVX512F FMA\n",
|
|||
|
"To enable them in other operations, rebuild TensorFlow with the appropriate compiler flags.\n",
|
|||
|
"2024-01-04 16:14:40.319726: I tensorflow/stream_executor/platform/default/dso_loader.cc:53] Successfully opened dynamic library libcuda.so.1\n",
|
|||
|
"2024-01-04 16:14:40.406804: E tensorflow/stream_executor/cuda/cuda_driver.cc:328] failed call to cuInit: CUDA_ERROR_INVALID_DEVICE: invalid device ordinal\n",
|
|||
|
"2024-01-04 16:14:40.406829: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:169] retrieving CUDA diagnostic information for host: zhaojh-yv621\n",
|
|||
|
"2024-01-04 16:14:40.406833: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:176] hostname: zhaojh-yv621\n",
|
|||
|
"2024-01-04 16:14:40.406963: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:200] libcuda reported version is: 520.61.5\n",
|
|||
|
"2024-01-04 16:14:40.406982: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:204] kernel reported version is: 520.61.5\n",
|
|||
|
"2024-01-04 16:14:40.406985: I tensorflow/stream_executor/cuda/cuda_diagnostics.cc:310] kernel version seems to match DSO: 520.61.5\n"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"data": {
|
|||
|
"text/plain": [
|
|||
|
"False"
|
|||
|
]
|
|||
|
},
|
|||
|
"execution_count": 8,
|
|||
|
"metadata": {},
|
|||
|
"output_type": "execute_result"
|
|||
|
}
|
|||
|
],
|
|||
|
"source": [
|
|||
|
"tf.test.is_gpu_available()"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 9,
|
|||
|
"id": "1c85d462-f248-4ffb-908f-eb4b20eab179",
|
|||
|
"metadata": {},
|
|||
|
"outputs": [],
|
|||
|
"source": [
|
|||
|
"class TransformerBlock(layers.Layer):\n",
|
|||
|
" def __init__(self, embed_dim, num_heads, ff_dim, name, rate=0.1):\n",
|
|||
|
" super().__init__()\n",
|
|||
|
" self.att = layers.MultiHeadAttention(num_heads=num_heads, key_dim=embed_dim, name=name)\n",
|
|||
|
" self.ffn = keras.Sequential(\n",
|
|||
|
" [layers.Dense(ff_dim, activation=\"relu\"), layers.Dense(embed_dim),]\n",
|
|||
|
" )\n",
|
|||
|
" self.layernorm1 = layers.LayerNormalization(epsilon=1e-6)\n",
|
|||
|
" self.layernorm2 = layers.LayerNormalization(epsilon=1e-6)\n",
|
|||
|
" self.dropout1 = layers.Dropout(rate)\n",
|
|||
|
" self.dropout2 = layers.Dropout(rate)\n",
|
|||
|
"\n",
|
|||
|
" def call(self, inputs, training):\n",
|
|||
|
" attn_output = self.att(inputs, inputs)\n",
|
|||
|
" attn_output = self.dropout1(attn_output, training=training)\n",
|
|||
|
" out1 = self.layernorm1(inputs + attn_output)\n",
|
|||
|
" ffn_output = self.ffn(out1)\n",
|
|||
|
" ffn_output = self.dropout2(ffn_output, training=training)\n",
|
|||
|
" return self.layernorm2(out1 + ffn_output)"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 10,
|
|||
|
"id": "790284a3-b9d3-4144-b481-38a7c3ecb4b9",
|
|||
|
"metadata": {},
|
|||
|
"outputs": [],
|
|||
|
"source": [
|
|||
|
"from tensorflow.keras import Model"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 11,
|
|||
|
"id": "cd9a1ca1-d0ca-4cb5-9ef5-fd5d63576cd2",
|
|||
|
"metadata": {},
|
|||
|
"outputs": [],
|
|||
|
"source": [
|
|||
|
"from tensorflow.keras.initializers import Constant"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 12,
|
|||
|
"id": "9bc02f29-0fb7-420d-99a8-435eadc06e29",
|
|||
|
"metadata": {},
|
|||
|
"outputs": [],
|
|||
|
"source": [
|
|||
|
"# Custom loss layer\n",
|
|||
|
"class CustomMultiLossLayer(layers.Layer):\n",
|
|||
|
" def __init__(self, nb_outputs=2, **kwargs):\n",
|
|||
|
" self.nb_outputs = nb_outputs\n",
|
|||
|
" self.is_placeholder = True\n",
|
|||
|
" super(CustomMultiLossLayer, self).__init__(**kwargs)\n",
|
|||
|
" \n",
|
|||
|
" def build(self, input_shape=None):\n",
|
|||
|
" # initialise log_vars\n",
|
|||
|
" self.log_vars = []\n",
|
|||
|
" for i in range(self.nb_outputs):\n",
|
|||
|
" self.log_vars += [self.add_weight(name='log_var' + str(i), shape=(1,),\n",
|
|||
|
" initializer=tf.initializers.he_normal(), trainable=True)]\n",
|
|||
|
" super(CustomMultiLossLayer, self).build(input_shape)\n",
|
|||
|
"\n",
|
|||
|
" def multi_loss(self, ys_true, ys_pred):\n",
|
|||
|
" assert len(ys_true) == self.nb_outputs and len(ys_pred) == self.nb_outputs\n",
|
|||
|
" loss = 0\n",
|
|||
|
" for y_true, y_pred, log_var in zip(ys_true, ys_pred, self.log_vars):\n",
|
|||
|
" mse = (y_true - y_pred) ** 2.\n",
|
|||
|
" pre = K.exp(-log_var[0])\n",
|
|||
|
" loss += tf.abs(tf.reduce_logsumexp(pre * mse + log_var[0], axis=-1))\n",
|
|||
|
" return K.mean(loss)\n",
|
|||
|
"\n",
|
|||
|
" def call(self, inputs):\n",
|
|||
|
" ys_true = inputs[:self.nb_outputs]\n",
|
|||
|
" ys_pred = inputs[self.nb_outputs:]\n",
|
|||
|
" loss = self.multi_loss(ys_true, ys_pred)\n",
|
|||
|
" self.add_loss(loss, inputs=inputs)\n",
|
|||
|
" # We won't actually use the output.\n",
|
|||
|
" return K.concatenate(inputs, -1)"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 13,
|
|||
|
"id": "a190207e-5a59-4813-9660-758760cf1b73",
|
|||
|
"metadata": {},
|
|||
|
"outputs": [],
|
|||
|
"source": [
|
|||
|
"num_heads, ff_dim = 1, 12"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 38,
|
|||
|
"id": "80f32155-e71f-4615-8d0c-01dfd04988fe",
|
|||
|
"metadata": {},
|
|||
|
"outputs": [],
|
|||
|
"source": [
|
|||
|
"def get_prediction_model():\n",
|
|||
|
" def build_output(out, out_name):\n",
|
|||
|
" self_block = TransformerBlock(64, num_heads, ff_dim, name=f'{out_name}_attn')\n",
|
|||
|
" out = self_block(out)\n",
|
|||
|
" out = layers.GlobalAveragePooling1D()(out)\n",
|
|||
|
" out = layers.Dropout(0.1)(out)\n",
|
|||
|
" out = layers.Dense(32, activation=\"relu\")(out)\n",
|
|||
|
" # out = layers.Dense(1, name=out_name, activation=\"sigmoid\")(out)\n",
|
|||
|
" return out\n",
|
|||
|
" inputs = layers.Input(shape=(1,len(feature_cols)), name='input')\n",
|
|||
|
" x = layers.Conv1D(filters=64, kernel_size=1, activation='relu')(inputs)\n",
|
|||
|
" # x = layers.Dropout(rate=0.1)(x)\n",
|
|||
|
" lstm_out = layers.Bidirectional(layers.LSTM(units=64, return_sequences=True))(x)\n",
|
|||
|
" lstm_out = layers.Dense(128, activation='relu')(lstm_out)\n",
|
|||
|
" transformer_block = TransformerBlock(128, num_heads, ff_dim, name='first_attn')\n",
|
|||
|
" out = transformer_block(lstm_out)\n",
|
|||
|
" out = layers.GlobalAveragePooling1D()(out)\n",
|
|||
|
" out = layers.Dropout(0.1)(out)\n",
|
|||
|
" out = layers.Dense(64, activation='relu')(out)\n",
|
|||
|
" out = K.expand_dims(out, axis=1)\n",
|
|||
|
"\n",
|
|||
|
" bet = build_output(out, 'bet')\n",
|
|||
|
" mesco = build_output(out, 'mesco')\n",
|
|||
|
" micro = build_output(out, 'micro')\n",
|
|||
|
" avg = build_output(out, 'avg')\n",
|
|||
|
"\n",
|
|||
|
" bet = layers.Dense(1, activation='sigmoid', name='bet')(bet)\n",
|
|||
|
" mesco = layers.Dense(1, activation='sigmoid', name='mesco')(mesco)\n",
|
|||
|
" micro = layers.Dense(1, activation='sigmoid', name='micro')(micro)\n",
|
|||
|
" avg = layers.Dense(1, activation='sigmoid', name='avg')(avg)\n",
|
|||
|
"\n",
|
|||
|
" model = Model(inputs=[inputs], outputs=[bet, mesco, micro, avg])\n",
|
|||
|
" return model\n"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 39,
|
|||
|
"id": "264001b1-5e4a-4786-96fd-2b5c70ab3212",
|
|||
|
"metadata": {},
|
|||
|
"outputs": [],
|
|||
|
"source": [
|
|||
|
"def get_trainable_model(prediction_model):\n",
|
|||
|
" inputs = layers.Input(shape=(1,len(feature_cols)), name='input')\n",
|
|||
|
" bet, mesco, micro, avg = prediction_model(inputs)\n",
|
|||
|
" bet_real = layers.Input(shape=(1,), name='bet_real')\n",
|
|||
|
" mesco_real = layers.Input(shape=(1,), name='mesco_real')\n",
|
|||
|
" micro_real = layers.Input(shape=(1,), name='micro_real')\n",
|
|||
|
" avg_real = layers.Input(shape=(1,), name='avg_real')\n",
|
|||
|
" out = CustomMultiLossLayer(nb_outputs=4)([bet_real, mesco_real, micro_real, avg_real, bet, mesco, micro, avg])\n",
|
|||
|
" return Model([inputs, bet_real, mesco_real, micro_real, avg_real], out)"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 40,
|
|||
|
"id": "1eebdab3-1f88-48a1-b5e0-bc8787528c1b",
|
|||
|
"metadata": {},
|
|||
|
"outputs": [],
|
|||
|
"source": [
|
|||
|
"maxs = train_data.max()\n",
|
|||
|
"mins = train_data.min()\n",
|
|||
|
"for col in train_data.columns:\n",
|
|||
|
" if maxs[col] - mins[col] == 0:\n",
|
|||
|
" continue\n",
|
|||
|
" train_data[col] = (train_data[col] - mins[col]) / (maxs[col] - mins[col])"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 41,
|
|||
|
"id": "7f27bd56-4f6b-4242-9f79-c7d6b3ee2f13",
|
|||
|
"metadata": {},
|
|||
|
"outputs": [
|
|||
|
{
|
|||
|
"data": {
|
|||
|
"text/html": [
|
|||
|
"<div>\n",
|
|||
|
"<style scoped>\n",
|
|||
|
" .dataframe tbody tr th:only-of-type {\n",
|
|||
|
" vertical-align: middle;\n",
|
|||
|
" }\n",
|
|||
|
"\n",
|
|||
|
" .dataframe tbody tr th {\n",
|
|||
|
" vertical-align: top;\n",
|
|||
|
" }\n",
|
|||
|
"\n",
|
|||
|
" .dataframe thead th {\n",
|
|||
|
" text-align: right;\n",
|
|||
|
" }\n",
|
|||
|
"</style>\n",
|
|||
|
"<table border=\"1\" class=\"dataframe\">\n",
|
|||
|
" <thead>\n",
|
|||
|
" <tr style=\"text-align: right;\">\n",
|
|||
|
" <th></th>\n",
|
|||
|
" <th>热处理条件-热处理次数</th>\n",
|
|||
|
" <th>热处理条件-是否是中温停留</th>\n",
|
|||
|
" <th>第一次热处理-温度</th>\n",
|
|||
|
" <th>第一次热处理-升温速率</th>\n",
|
|||
|
" <th>第一次热处理-保留时间</th>\n",
|
|||
|
" <th>第二次热处理-温度</th>\n",
|
|||
|
" <th>第二次热处理-升温速率·</th>\n",
|
|||
|
" <th>第二次热处理-保留时间</th>\n",
|
|||
|
" <th>共碳化-是否是共碳化物质</th>\n",
|
|||
|
" <th>共碳化-共碳化物质/沥青</th>\n",
|
|||
|
" <th>...</th>\n",
|
|||
|
" <th>模板剂-种类_二氧化硅</th>\n",
|
|||
|
" <th>模板剂-种类_氢氧化镁</th>\n",
|
|||
|
" <th>模板剂-种类_氧化钙</th>\n",
|
|||
|
" <th>模板剂-种类_氧化锌</th>\n",
|
|||
|
" <th>模板剂-种类_氧化镁</th>\n",
|
|||
|
" <th>模板剂-种类_氯化钠</th>\n",
|
|||
|
" <th>模板剂-种类_氯化钾</th>\n",
|
|||
|
" <th>模板剂-种类_碱式碳酸镁</th>\n",
|
|||
|
" <th>模板剂-种类_碳酸钙</th>\n",
|
|||
|
" <th>模板剂-种类_纤维素</th>\n",
|
|||
|
" </tr>\n",
|
|||
|
" </thead>\n",
|
|||
|
" <tbody>\n",
|
|||
|
" <tr>\n",
|
|||
|
" <th>0</th>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0.166667</td>\n",
|
|||
|
" <td>0.3</td>\n",
|
|||
|
" <td>0.5</td>\n",
|
|||
|
" <td>0.000000</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0.000000</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>...</td>\n",
|
|||
|
" <td>0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>1.0</td>\n",
|
|||
|
" <td>0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" </tr>\n",
|
|||
|
" <tr>\n",
|
|||
|
" <th>1</th>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0.333333</td>\n",
|
|||
|
" <td>0.3</td>\n",
|
|||
|
" <td>0.5</td>\n",
|
|||
|
" <td>0.000000</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0.000000</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>...</td>\n",
|
|||
|
" <td>0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>1.0</td>\n",
|
|||
|
" <td>0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" </tr>\n",
|
|||
|
" <tr>\n",
|
|||
|
" <th>2</th>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0.333333</td>\n",
|
|||
|
" <td>0.3</td>\n",
|
|||
|
" <td>0.5</td>\n",
|
|||
|
" <td>0.000000</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0.000000</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>...</td>\n",
|
|||
|
" <td>0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>1.0</td>\n",
|
|||
|
" <td>0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" </tr>\n",
|
|||
|
" <tr>\n",
|
|||
|
" <th>3</th>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0.333333</td>\n",
|
|||
|
" <td>0.3</td>\n",
|
|||
|
" <td>0.5</td>\n",
|
|||
|
" <td>0.000000</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0.000000</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>...</td>\n",
|
|||
|
" <td>0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>1.0</td>\n",
|
|||
|
" <td>0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" </tr>\n",
|
|||
|
" <tr>\n",
|
|||
|
" <th>4</th>\n",
|
|||
|
" <td>1.0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0.166667</td>\n",
|
|||
|
" <td>0.3</td>\n",
|
|||
|
" <td>0.5</td>\n",
|
|||
|
" <td>0.666667</td>\n",
|
|||
|
" <td>0.5</td>\n",
|
|||
|
" <td>0.666667</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>...</td>\n",
|
|||
|
" <td>0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0</td>\n",
|
|||
|
" <td>1.0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" </tr>\n",
|
|||
|
" <tr>\n",
|
|||
|
" <th>...</th>\n",
|
|||
|
" <td>...</td>\n",
|
|||
|
" <td>...</td>\n",
|
|||
|
" <td>...</td>\n",
|
|||
|
" <td>...</td>\n",
|
|||
|
" <td>...</td>\n",
|
|||
|
" <td>...</td>\n",
|
|||
|
" <td>...</td>\n",
|
|||
|
" <td>...</td>\n",
|
|||
|
" <td>...</td>\n",
|
|||
|
" <td>...</td>\n",
|
|||
|
" <td>...</td>\n",
|
|||
|
" <td>...</td>\n",
|
|||
|
" <td>...</td>\n",
|
|||
|
" <td>...</td>\n",
|
|||
|
" <td>...</td>\n",
|
|||
|
" <td>...</td>\n",
|
|||
|
" <td>...</td>\n",
|
|||
|
" <td>...</td>\n",
|
|||
|
" <td>...</td>\n",
|
|||
|
" <td>...</td>\n",
|
|||
|
" <td>...</td>\n",
|
|||
|
" </tr>\n",
|
|||
|
" <tr>\n",
|
|||
|
" <th>144</th>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0.333333</td>\n",
|
|||
|
" <td>0.3</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0.000000</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0.000000</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>...</td>\n",
|
|||
|
" <td>0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" </tr>\n",
|
|||
|
" <tr>\n",
|
|||
|
" <th>145</th>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0.500000</td>\n",
|
|||
|
" <td>0.3</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0.000000</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0.000000</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>...</td>\n",
|
|||
|
" <td>0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" </tr>\n",
|
|||
|
" <tr>\n",
|
|||
|
" <th>146</th>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0.666667</td>\n",
|
|||
|
" <td>0.3</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0.000000</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0.000000</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>...</td>\n",
|
|||
|
" <td>0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" </tr>\n",
|
|||
|
" <tr>\n",
|
|||
|
" <th>147</th>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0.500000</td>\n",
|
|||
|
" <td>0.3</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0.000000</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0.000000</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>...</td>\n",
|
|||
|
" <td>0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" </tr>\n",
|
|||
|
" <tr>\n",
|
|||
|
" <th>148</th>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0.500000</td>\n",
|
|||
|
" <td>0.3</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0.000000</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0.000000</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>...</td>\n",
|
|||
|
" <td>0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" <td>0.0</td>\n",
|
|||
|
" </tr>\n",
|
|||
|
" </tbody>\n",
|
|||
|
"</table>\n",
|
|||
|
"<p>123 rows × 42 columns</p>\n",
|
|||
|
"</div>"
|
|||
|
],
|
|||
|
"text/plain": [
|
|||
|
" 热处理条件-热处理次数 热处理条件-是否是中温停留 第一次热处理-温度 第一次热处理-升温速率 第一次热处理-保留时间 \\\n",
|
|||
|
"0 0.0 0.0 0.166667 0.3 0.5 \n",
|
|||
|
"1 0.0 0.0 0.333333 0.3 0.5 \n",
|
|||
|
"2 0.0 0.0 0.333333 0.3 0.5 \n",
|
|||
|
"3 0.0 0.0 0.333333 0.3 0.5 \n",
|
|||
|
"4 1.0 0.0 0.166667 0.3 0.5 \n",
|
|||
|
".. ... ... ... ... ... \n",
|
|||
|
"144 0.0 0.0 0.333333 0.3 0.0 \n",
|
|||
|
"145 0.0 0.0 0.500000 0.3 0.0 \n",
|
|||
|
"146 0.0 0.0 0.666667 0.3 0.0 \n",
|
|||
|
"147 0.0 0.0 0.500000 0.3 0.0 \n",
|
|||
|
"148 0.0 0.0 0.500000 0.3 0.0 \n",
|
|||
|
"\n",
|
|||
|
" 第二次热处理-温度 第二次热处理-升温速率· 第二次热处理-保留时间 共碳化-是否是共碳化物质 共碳化-共碳化物质/沥青 ... \\\n",
|
|||
|
"0 0.000000 0.0 0.000000 0.0 0.0 ... \n",
|
|||
|
"1 0.000000 0.0 0.000000 0.0 0.0 ... \n",
|
|||
|
"2 0.000000 0.0 0.000000 0.0 0.0 ... \n",
|
|||
|
"3 0.000000 0.0 0.000000 0.0 0.0 ... \n",
|
|||
|
"4 0.666667 0.5 0.666667 0.0 0.0 ... \n",
|
|||
|
".. ... ... ... ... ... ... \n",
|
|||
|
"144 0.000000 0.0 0.000000 0.0 0.0 ... \n",
|
|||
|
"145 0.000000 0.0 0.000000 0.0 0.0 ... \n",
|
|||
|
"146 0.000000 0.0 0.000000 0.0 0.0 ... \n",
|
|||
|
"147 0.000000 0.0 0.000000 0.0 0.0 ... \n",
|
|||
|
"148 0.000000 0.0 0.000000 0.0 0.0 ... \n",
|
|||
|
"\n",
|
|||
|
" 模板剂-种类_二氧化硅 模板剂-种类_氢氧化镁 模板剂-种类_氧化钙 模板剂-种类_氧化锌 模板剂-种类_氧化镁 模板剂-种类_氯化钠 \\\n",
|
|||
|
"0 0 0.0 1.0 0 0.0 0.0 \n",
|
|||
|
"1 0 0.0 1.0 0 0.0 0.0 \n",
|
|||
|
"2 0 0.0 1.0 0 0.0 0.0 \n",
|
|||
|
"3 0 0.0 1.0 0 0.0 0.0 \n",
|
|||
|
"4 0 0.0 0.0 0 0.0 0.0 \n",
|
|||
|
".. ... ... ... ... ... ... \n",
|
|||
|
"144 0 0.0 0.0 0 0.0 0.0 \n",
|
|||
|
"145 0 0.0 0.0 0 0.0 0.0 \n",
|
|||
|
"146 0 0.0 0.0 0 0.0 0.0 \n",
|
|||
|
"147 0 0.0 0.0 0 0.0 0.0 \n",
|
|||
|
"148 0 0.0 0.0 0 0.0 0.0 \n",
|
|||
|
"\n",
|
|||
|
" 模板剂-种类_氯化钾 模板剂-种类_碱式碳酸镁 模板剂-种类_碳酸钙 模板剂-种类_纤维素 \n",
|
|||
|
"0 0 0.0 0.0 0.0 \n",
|
|||
|
"1 0 0.0 0.0 0.0 \n",
|
|||
|
"2 0 0.0 0.0 0.0 \n",
|
|||
|
"3 0 0.0 0.0 0.0 \n",
|
|||
|
"4 0 1.0 0.0 0.0 \n",
|
|||
|
".. ... ... ... ... \n",
|
|||
|
"144 0 0.0 0.0 0.0 \n",
|
|||
|
"145 0 0.0 0.0 0.0 \n",
|
|||
|
"146 0 0.0 0.0 0.0 \n",
|
|||
|
"147 0 0.0 0.0 0.0 \n",
|
|||
|
"148 0 0.0 0.0 0.0 \n",
|
|||
|
"\n",
|
|||
|
"[123 rows x 42 columns]"
|
|||
|
]
|
|||
|
},
|
|||
|
"execution_count": 41,
|
|||
|
"metadata": {},
|
|||
|
"output_type": "execute_result"
|
|||
|
}
|
|||
|
],
|
|||
|
"source": [
|
|||
|
"train_data"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 42,
|
|||
|
"id": "baf45a3d-dc01-44fc-9f0b-456964ac2cdb",
|
|||
|
"metadata": {},
|
|||
|
"outputs": [],
|
|||
|
"source": [
|
|||
|
"# feature_cols = [x for x in train_data.columns if x not in out_cols and '第二次' not in x]\n",
|
|||
|
"feature_cols = [x for x in train_data.columns if x not in out_cols]\n",
|
|||
|
"use_cols = feature_cols + out_cols"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 43,
|
|||
|
"id": "f2d27538-d2bc-4202-b0cf-d3e0949b4686",
|
|||
|
"metadata": {},
|
|||
|
"outputs": [],
|
|||
|
"source": [
|
|||
|
"use_data = train_data.copy()\n",
|
|||
|
"for col in use_cols:\n",
|
|||
|
" use_data[col] = use_data[col].astype('float32')"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 44,
|
|||
|
"id": "54c1df2c-c297-4b8d-be8a-3a99cff22545",
|
|||
|
"metadata": {},
|
|||
|
"outputs": [],
|
|||
|
"source": [
|
|||
|
"train, valid = train_test_split(use_data[use_cols], test_size=0.2, random_state=42, shuffle=True)\n",
|
|||
|
"valid, test = train_test_split(valid, test_size=0.5, random_state=42, shuffle=True)"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 45,
|
|||
|
"id": "e7a914da-b9c2-40d9-96e0-459b0888adba",
|
|||
|
"metadata": {},
|
|||
|
"outputs": [],
|
|||
|
"source": [
|
|||
|
"prediction_model = get_prediction_model()\n",
|
|||
|
"trainable_model = get_trainable_model(prediction_model)"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 46,
|
|||
|
"id": "4f832a1e-48e2-4467-b381-35b9d2f1271a",
|
|||
|
"metadata": {},
|
|||
|
"outputs": [
|
|||
|
{
|
|||
|
"name": "stdout",
|
|||
|
"output_type": "stream",
|
|||
|
"text": [
|
|||
|
"Model: \"model_4\"\n",
|
|||
|
"__________________________________________________________________________________________________\n",
|
|||
|
"Layer (type) Output Shape Param # Connected to \n",
|
|||
|
"==================================================================================================\n",
|
|||
|
"input (InputLayer) [(None, 1, 38)] 0 \n",
|
|||
|
"__________________________________________________________________________________________________\n",
|
|||
|
"conv1d_3 (Conv1D) (None, 1, 64) 2496 input[0][0] \n",
|
|||
|
"__________________________________________________________________________________________________\n",
|
|||
|
"bidirectional_3 (Bidirectional) (None, 1, 128) 66048 conv1d_3[0][0] \n",
|
|||
|
"__________________________________________________________________________________________________\n",
|
|||
|
"dense_28 (Dense) (None, 1, 128) 16512 bidirectional_3[0][0] \n",
|
|||
|
"__________________________________________________________________________________________________\n",
|
|||
|
"transformer_block_7 (Transforme (None, 1, 128) 202640 dense_28[0][0] \n",
|
|||
|
"__________________________________________________________________________________________________\n",
|
|||
|
"global_average_pooling1d_7 (Glo (None, 128) 0 transformer_block_7[0][0] \n",
|
|||
|
"__________________________________________________________________________________________________\n",
|
|||
|
"dropout_23 (Dropout) (None, 128) 0 global_average_pooling1d_7[0][0] \n",
|
|||
|
"__________________________________________________________________________________________________\n",
|
|||
|
"dense_31 (Dense) (None, 64) 8256 dropout_23[0][0] \n",
|
|||
|
"__________________________________________________________________________________________________\n",
|
|||
|
"tf.expand_dims_3 (TFOpLambda) (None, 1, 64) 0 dense_31[0][0] \n",
|
|||
|
"__________________________________________________________________________________________________\n",
|
|||
|
"transformer_block_8 (Transforme (None, 1, 64) 52176 tf.expand_dims_3[0][0] \n",
|
|||
|
"__________________________________________________________________________________________________\n",
|
|||
|
"transformer_block_9 (Transforme (None, 1, 64) 52176 tf.expand_dims_3[0][0] \n",
|
|||
|
"__________________________________________________________________________________________________\n",
|
|||
|
"transformer_block_10 (Transform (None, 1, 64) 52176 tf.expand_dims_3[0][0] \n",
|
|||
|
"__________________________________________________________________________________________________\n",
|
|||
|
"transformer_block_11 (Transform (None, 1, 64) 52176 tf.expand_dims_3[0][0] \n",
|
|||
|
"__________________________________________________________________________________________________\n",
|
|||
|
"global_average_pooling1d_8 (Glo (None, 64) 0 transformer_block_8[0][0] \n",
|
|||
|
"__________________________________________________________________________________________________\n",
|
|||
|
"global_average_pooling1d_9 (Glo (None, 64) 0 transformer_block_9[0][0] \n",
|
|||
|
"__________________________________________________________________________________________________\n",
|
|||
|
"global_average_pooling1d_10 (Gl (None, 64) 0 transformer_block_10[0][0] \n",
|
|||
|
"__________________________________________________________________________________________________\n",
|
|||
|
"global_average_pooling1d_11 (Gl (None, 64) 0 transformer_block_11[0][0] \n",
|
|||
|
"__________________________________________________________________________________________________\n",
|
|||
|
"dense_34 (Dense) (None, 32) 2080 global_average_pooling1d_8[0][0] \n",
|
|||
|
"__________________________________________________________________________________________________\n",
|
|||
|
"dense_37 (Dense) (None, 32) 2080 global_average_pooling1d_9[0][0] \n",
|
|||
|
"__________________________________________________________________________________________________\n",
|
|||
|
"dense_40 (Dense) (None, 32) 2080 global_average_pooling1d_10[0][0]\n",
|
|||
|
"__________________________________________________________________________________________________\n",
|
|||
|
"dense_43 (Dense) (None, 32) 2080 global_average_pooling1d_11[0][0]\n",
|
|||
|
"__________________________________________________________________________________________________\n",
|
|||
|
"bet (Dense) (None, 1) 33 dense_34[0][0] \n",
|
|||
|
"__________________________________________________________________________________________________\n",
|
|||
|
"mesco (Dense) (None, 1) 33 dense_37[0][0] \n",
|
|||
|
"__________________________________________________________________________________________________\n",
|
|||
|
"micro (Dense) (None, 1) 33 dense_40[0][0] \n",
|
|||
|
"__________________________________________________________________________________________________\n",
|
|||
|
"avg (Dense) (None, 1) 33 dense_43[0][0] \n",
|
|||
|
"==================================================================================================\n",
|
|||
|
"Total params: 513,108\n",
|
|||
|
"Trainable params: 513,108\n",
|
|||
|
"Non-trainable params: 0\n",
|
|||
|
"__________________________________________________________________________________________________\n"
|
|||
|
]
|
|||
|
}
|
|||
|
],
|
|||
|
"source": [
|
|||
|
"prediction_model.summary()"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 47,
|
|||
|
"id": "9289f452-a5a4-40c4-b942-f6cb2e348548",
|
|||
|
"metadata": {},
|
|||
|
"outputs": [],
|
|||
|
"source": [
|
|||
|
"from tensorflow.keras import optimizers\n",
|
|||
|
"from tensorflow.python.keras.utils.vis_utils import plot_model"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 48,
|
|||
|
"id": "2494ef5a-5b2b-4f11-b6cd-dc39503c9106",
|
|||
|
"metadata": {},
|
|||
|
"outputs": [],
|
|||
|
"source": [
|
|||
|
"X = np.expand_dims(train[feature_cols].values, axis=1)\n",
|
|||
|
"Y = [x for x in train[out_cols].values.T]\n",
|
|||
|
"Y_valid = [x for x in valid[out_cols].values.T]"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 49,
|
|||
|
"id": "9a62dea1-4f05-411b-9756-a91623580581",
|
|||
|
"metadata": {},
|
|||
|
"outputs": [],
|
|||
|
"source": [
|
|||
|
"from keras.callbacks import ReduceLROnPlateau\n",
|
|||
|
"reduce_lr = ReduceLROnPlateau(monitor='val_loss', patience=10, mode='auto')"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 50,
|
|||
|
"id": "cf869e4d-0fce-45a2-afff-46fd9b30fd1c",
|
|||
|
"metadata": {},
|
|||
|
"outputs": [
|
|||
|
{
|
|||
|
"name": "stderr",
|
|||
|
"output_type": "stream",
|
|||
|
"text": [
|
|||
|
"2024-01-04 16:17:21.543163: I tensorflow/compiler/mlir/mlir_graph_optimization_pass.cc:176] None of the MLIR Optimization Passes are enabled (registered 2)\n",
|
|||
|
"2024-01-04 16:17:21.562835: I tensorflow/core/platform/profile_utils/cpu_utils.cc:114] CPU Frequency: 2200000000 Hz\n"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"name": "stdout",
|
|||
|
"output_type": "stream",
|
|||
|
"text": [
|
|||
|
"Epoch 1/160\n",
|
|||
|
"13/13 [==============================] - 6s 103ms/step - loss: 5.1128 - val_loss: 4.4845\n",
|
|||
|
"Epoch 2/160\n",
|
|||
|
"13/13 [==============================] - 0s 30ms/step - loss: 4.4173 - val_loss: 4.3305\n",
|
|||
|
"Epoch 3/160\n",
|
|||
|
"13/13 [==============================] - 0s 32ms/step - loss: 4.0913 - val_loss: 4.4123\n",
|
|||
|
"Epoch 4/160\n",
|
|||
|
"13/13 [==============================] - 0s 32ms/step - loss: 4.0410 - val_loss: 4.3142\n",
|
|||
|
"Epoch 5/160\n",
|
|||
|
"13/13 [==============================] - 0s 33ms/step - loss: 3.9933 - val_loss: 4.5518\n",
|
|||
|
"Epoch 6/160\n",
|
|||
|
"13/13 [==============================] - 0s 29ms/step - loss: 4.1234 - val_loss: 4.3268\n",
|
|||
|
"Epoch 7/160\n",
|
|||
|
"13/13 [==============================] - 0s 35ms/step - loss: 4.0470 - val_loss: 4.2908\n",
|
|||
|
"Epoch 8/160\n",
|
|||
|
"13/13 [==============================] - 0s 32ms/step - loss: 4.1230 - val_loss: 4.4964\n",
|
|||
|
"Epoch 9/160\n",
|
|||
|
"13/13 [==============================] - 0s 33ms/step - loss: 3.8889 - val_loss: 4.0178\n",
|
|||
|
"Epoch 10/160\n",
|
|||
|
"13/13 [==============================] - 0s 33ms/step - loss: 3.6648 - val_loss: 3.9010\n",
|
|||
|
"Epoch 11/160\n",
|
|||
|
"13/13 [==============================] - 0s 32ms/step - loss: 3.7712 - val_loss: 3.9471\n",
|
|||
|
"Epoch 12/160\n",
|
|||
|
"13/13 [==============================] - 0s 32ms/step - loss: 3.5449 - val_loss: 3.8723\n",
|
|||
|
"Epoch 13/160\n",
|
|||
|
"13/13 [==============================] - 0s 26ms/step - loss: 3.3373 - val_loss: 3.8543\n",
|
|||
|
"Epoch 14/160\n",
|
|||
|
"13/13 [==============================] - 0s 28ms/step - loss: 3.5200 - val_loss: 3.8259\n",
|
|||
|
"Epoch 15/160\n",
|
|||
|
"13/13 [==============================] - 0s 28ms/step - loss: 3.5623 - val_loss: 3.8838\n",
|
|||
|
"Epoch 16/160\n",
|
|||
|
"13/13 [==============================] - 0s 29ms/step - loss: 3.3898 - val_loss: 3.8122\n",
|
|||
|
"Epoch 17/160\n",
|
|||
|
"13/13 [==============================] - 0s 35ms/step - loss: 3.2718 - val_loss: 3.8799\n",
|
|||
|
"Epoch 18/160\n",
|
|||
|
"13/13 [==============================] - 0s 32ms/step - loss: 3.3303 - val_loss: 3.7849\n",
|
|||
|
"Epoch 19/160\n",
|
|||
|
"13/13 [==============================] - 0s 26ms/step - loss: 3.2860 - val_loss: 3.7713\n",
|
|||
|
"Epoch 20/160\n",
|
|||
|
"13/13 [==============================] - 0s 34ms/step - loss: 3.2669 - val_loss: 3.5689\n",
|
|||
|
"Epoch 21/160\n",
|
|||
|
"13/13 [==============================] - 0s 34ms/step - loss: 3.2366 - val_loss: 3.5238\n",
|
|||
|
"Epoch 22/160\n",
|
|||
|
"13/13 [==============================] - 0s 33ms/step - loss: 3.0037 - val_loss: 3.6039\n",
|
|||
|
"Epoch 23/160\n",
|
|||
|
"13/13 [==============================] - 0s 32ms/step - loss: 3.2087 - val_loss: 3.5221\n",
|
|||
|
"Epoch 24/160\n",
|
|||
|
"13/13 [==============================] - 0s 32ms/step - loss: 3.0619 - val_loss: 3.5939\n",
|
|||
|
"Epoch 25/160\n",
|
|||
|
"13/13 [==============================] - 0s 32ms/step - loss: 3.0423 - val_loss: 3.2731\n",
|
|||
|
"Epoch 26/160\n",
|
|||
|
"13/13 [==============================] - 0s 33ms/step - loss: 3.0533 - val_loss: 3.2256\n",
|
|||
|
"Epoch 27/160\n",
|
|||
|
"13/13 [==============================] - 0s 32ms/step - loss: 3.0105 - val_loss: 3.2154\n",
|
|||
|
"Epoch 28/160\n",
|
|||
|
"13/13 [==============================] - 0s 33ms/step - loss: 2.9607 - val_loss: 3.2926\n",
|
|||
|
"Epoch 29/160\n",
|
|||
|
"13/13 [==============================] - 0s 28ms/step - loss: 3.0072 - val_loss: 3.5834\n",
|
|||
|
"Epoch 30/160\n",
|
|||
|
"13/13 [==============================] - 0s 28ms/step - loss: 2.9276 - val_loss: 3.1635\n",
|
|||
|
"Epoch 31/160\n",
|
|||
|
"13/13 [==============================] - 0s 28ms/step - loss: 2.8930 - val_loss: 3.1363\n",
|
|||
|
"Epoch 32/160\n",
|
|||
|
"13/13 [==============================] - 0s 28ms/step - loss: 2.7904 - val_loss: 3.0188\n",
|
|||
|
"Epoch 33/160\n",
|
|||
|
"13/13 [==============================] - 0s 35ms/step - loss: 2.6856 - val_loss: 2.9808\n",
|
|||
|
"Epoch 34/160\n",
|
|||
|
"13/13 [==============================] - 0s 32ms/step - loss: 2.6503 - val_loss: 3.0943\n",
|
|||
|
"Epoch 35/160\n",
|
|||
|
"13/13 [==============================] - 0s 32ms/step - loss: 2.5339 - val_loss: 2.9359\n",
|
|||
|
"Epoch 36/160\n",
|
|||
|
"13/13 [==============================] - 0s 33ms/step - loss: 2.5369 - val_loss: 2.9704\n",
|
|||
|
"Epoch 37/160\n",
|
|||
|
"13/13 [==============================] - 0s 32ms/step - loss: 2.5478 - val_loss: 2.9344\n",
|
|||
|
"Epoch 38/160\n",
|
|||
|
"13/13 [==============================] - 0s 32ms/step - loss: 2.7129 - val_loss: 2.8326\n",
|
|||
|
"Epoch 39/160\n",
|
|||
|
"13/13 [==============================] - 0s 33ms/step - loss: 2.3453 - val_loss: 2.8198\n",
|
|||
|
"Epoch 40/160\n",
|
|||
|
"13/13 [==============================] - 0s 33ms/step - loss: 2.4666 - val_loss: 2.7701\n",
|
|||
|
"Epoch 41/160\n",
|
|||
|
"13/13 [==============================] - 0s 32ms/step - loss: 2.3401 - val_loss: 2.7727\n",
|
|||
|
"Epoch 42/160\n",
|
|||
|
"13/13 [==============================] - 0s 28ms/step - loss: 2.4369 - val_loss: 2.7568\n",
|
|||
|
"Epoch 43/160\n",
|
|||
|
"13/13 [==============================] - 0s 28ms/step - loss: 2.2170 - val_loss: 2.6998\n",
|
|||
|
"Epoch 44/160\n",
|
|||
|
"13/13 [==============================] - 0s 33ms/step - loss: 2.1565 - val_loss: 2.6711\n",
|
|||
|
"Epoch 45/160\n",
|
|||
|
"13/13 [==============================] - 0s 28ms/step - loss: 2.1251 - val_loss: 2.6134\n",
|
|||
|
"Epoch 46/160\n",
|
|||
|
"13/13 [==============================] - 0s 30ms/step - loss: 2.1728 - val_loss: 2.6394\n",
|
|||
|
"Epoch 47/160\n",
|
|||
|
"13/13 [==============================] - 0s 28ms/step - loss: 2.0609 - val_loss: 2.6568\n",
|
|||
|
"Epoch 48/160\n",
|
|||
|
"13/13 [==============================] - 0s 28ms/step - loss: 2.0893 - val_loss: 2.6603\n",
|
|||
|
"Epoch 49/160\n",
|
|||
|
"13/13 [==============================] - 0s 28ms/step - loss: 2.0615 - val_loss: 2.6517\n",
|
|||
|
"Epoch 50/160\n",
|
|||
|
"13/13 [==============================] - 0s 33ms/step - loss: 2.0500 - val_loss: 2.6041\n",
|
|||
|
"Epoch 51/160\n",
|
|||
|
"13/13 [==============================] - 0s 28ms/step - loss: 1.9309 - val_loss: 2.6218\n",
|
|||
|
"Epoch 52/160\n",
|
|||
|
"13/13 [==============================] - 0s 28ms/step - loss: 1.9971 - val_loss: 2.4494\n",
|
|||
|
"Epoch 53/160\n",
|
|||
|
"13/13 [==============================] - 0s 35ms/step - loss: 1.8514 - val_loss: 2.3886\n",
|
|||
|
"Epoch 54/160\n",
|
|||
|
"13/13 [==============================] - 0s 33ms/step - loss: 1.7823 - val_loss: 2.5517\n",
|
|||
|
"Epoch 55/160\n",
|
|||
|
"13/13 [==============================] - 0s 32ms/step - loss: 1.7059 - val_loss: 2.3293\n",
|
|||
|
"Epoch 56/160\n",
|
|||
|
"13/13 [==============================] - 0s 33ms/step - loss: 1.7039 - val_loss: 2.3810\n",
|
|||
|
"Epoch 57/160\n",
|
|||
|
"13/13 [==============================] - 0s 34ms/step - loss: 1.6961 - val_loss: 2.4552\n",
|
|||
|
"Epoch 58/160\n",
|
|||
|
"13/13 [==============================] - 0s 31ms/step - loss: 1.7350 - val_loss: 2.3526\n",
|
|||
|
"Epoch 59/160\n",
|
|||
|
"13/13 [==============================] - 0s 32ms/step - loss: 1.5840 - val_loss: 2.2976\n",
|
|||
|
"Epoch 60/160\n",
|
|||
|
"13/13 [==============================] - 0s 28ms/step - loss: 1.4915 - val_loss: 2.3516\n",
|
|||
|
"Epoch 61/160\n",
|
|||
|
"13/13 [==============================] - 0s 28ms/step - loss: 1.5910 - val_loss: 2.2383\n",
|
|||
|
"Epoch 62/160\n",
|
|||
|
"13/13 [==============================] - 0s 29ms/step - loss: 1.6101 - val_loss: 2.1474\n",
|
|||
|
"Epoch 63/160\n",
|
|||
|
"13/13 [==============================] - 0s 34ms/step - loss: 1.4698 - val_loss: 2.1210\n",
|
|||
|
"Epoch 64/160\n",
|
|||
|
"13/13 [==============================] - 0s 31ms/step - loss: 1.4796 - val_loss: 2.0695\n",
|
|||
|
"Epoch 65/160\n",
|
|||
|
"13/13 [==============================] - 0s 33ms/step - loss: 1.4472 - val_loss: 1.9768\n",
|
|||
|
"Epoch 66/160\n",
|
|||
|
"13/13 [==============================] - 0s 33ms/step - loss: 1.6250 - val_loss: 2.1760\n",
|
|||
|
"Epoch 67/160\n",
|
|||
|
"13/13 [==============================] - 0s 33ms/step - loss: 1.4058 - val_loss: 2.0605\n",
|
|||
|
"Epoch 68/160\n",
|
|||
|
"13/13 [==============================] - 0s 33ms/step - loss: 1.4318 - val_loss: 2.1487\n",
|
|||
|
"Epoch 69/160\n",
|
|||
|
"13/13 [==============================] - 0s 28ms/step - loss: 1.3285 - val_loss: 1.8259\n",
|
|||
|
"Epoch 70/160\n",
|
|||
|
"13/13 [==============================] - 0s 28ms/step - loss: 1.4306 - val_loss: 1.7314\n",
|
|||
|
"Epoch 71/160\n",
|
|||
|
"13/13 [==============================] - 0s 28ms/step - loss: 1.3449 - val_loss: 1.7509\n",
|
|||
|
"Epoch 72/160\n",
|
|||
|
"13/13 [==============================] - 0s 32ms/step - loss: 1.2737 - val_loss: 1.8892\n",
|
|||
|
"Epoch 73/160\n",
|
|||
|
"13/13 [==============================] - 0s 32ms/step - loss: 1.3647 - val_loss: 1.8109\n",
|
|||
|
"Epoch 74/160\n",
|
|||
|
"13/13 [==============================] - 0s 28ms/step - loss: 1.3075 - val_loss: 1.8175\n",
|
|||
|
"Epoch 75/160\n",
|
|||
|
"13/13 [==============================] - 0s 28ms/step - loss: 1.2765 - val_loss: 1.7334\n",
|
|||
|
"Epoch 76/160\n",
|
|||
|
"13/13 [==============================] - 0s 28ms/step - loss: 1.2761 - val_loss: 1.7685\n",
|
|||
|
"Epoch 77/160\n",
|
|||
|
"13/13 [==============================] - 0s 28ms/step - loss: 1.1870 - val_loss: 1.7683\n",
|
|||
|
"Epoch 78/160\n",
|
|||
|
"13/13 [==============================] - 0s 28ms/step - loss: 1.1441 - val_loss: 1.8794\n",
|
|||
|
"Epoch 79/160\n",
|
|||
|
"13/13 [==============================] - 0s 28ms/step - loss: 1.1193 - val_loss: 1.9073\n",
|
|||
|
"Epoch 80/160\n",
|
|||
|
"13/13 [==============================] - 0s 35ms/step - loss: 1.1361 - val_loss: 1.8016\n",
|
|||
|
"Epoch 81/160\n",
|
|||
|
"13/13 [==============================] - 0s 26ms/step - loss: 1.0629 - val_loss: 1.8359\n",
|
|||
|
"Epoch 82/160\n",
|
|||
|
"13/13 [==============================] - 0s 29ms/step - loss: 1.1137 - val_loss: 1.9310\n",
|
|||
|
"Epoch 83/160\n",
|
|||
|
"13/13 [==============================] - 0s 28ms/step - loss: 1.0947 - val_loss: 1.9212\n",
|
|||
|
"Epoch 84/160\n",
|
|||
|
"13/13 [==============================] - 0s 28ms/step - loss: 1.0225 - val_loss: 1.9027\n",
|
|||
|
"Epoch 85/160\n",
|
|||
|
"13/13 [==============================] - 0s 28ms/step - loss: 1.0892 - val_loss: 1.8943\n",
|
|||
|
"Epoch 86/160\n",
|
|||
|
"13/13 [==============================] - 0s 28ms/step - loss: 1.0387 - val_loss: 1.9131\n",
|
|||
|
"Epoch 87/160\n",
|
|||
|
"13/13 [==============================] - 0s 34ms/step - loss: 1.0590 - val_loss: 1.8768\n",
|
|||
|
"Epoch 88/160\n",
|
|||
|
"13/13 [==============================] - 0s 27ms/step - loss: 1.0909 - val_loss: 1.8732\n",
|
|||
|
"Epoch 89/160\n",
|
|||
|
"13/13 [==============================] - 0s 34ms/step - loss: 1.0632 - val_loss: 1.8506\n",
|
|||
|
"Epoch 90/160\n",
|
|||
|
"13/13 [==============================] - 0s 26ms/step - loss: 1.0703 - val_loss: 1.8108\n",
|
|||
|
"Epoch 91/160\n",
|
|||
|
"13/13 [==============================] - 0s 33ms/step - loss: 1.0262 - val_loss: 1.8143\n",
|
|||
|
"Epoch 92/160\n",
|
|||
|
"13/13 [==============================] - 0s 27ms/step - loss: 1.0330 - val_loss: 1.8132\n",
|
|||
|
"Epoch 93/160\n",
|
|||
|
"13/13 [==============================] - 0s 28ms/step - loss: 1.0440 - val_loss: 1.8156\n",
|
|||
|
"Epoch 94/160\n",
|
|||
|
"13/13 [==============================] - 0s 28ms/step - loss: 1.0279 - val_loss: 1.8182\n",
|
|||
|
"Epoch 95/160\n",
|
|||
|
"13/13 [==============================] - 0s 28ms/step - loss: 1.0713 - val_loss: 1.8191\n",
|
|||
|
"Epoch 96/160\n",
|
|||
|
"13/13 [==============================] - 0s 29ms/step - loss: 1.0401 - val_loss: 1.8187\n",
|
|||
|
"Epoch 97/160\n",
|
|||
|
"13/13 [==============================] - 0s 28ms/step - loss: 1.0318 - val_loss: 1.8193\n",
|
|||
|
"Epoch 98/160\n",
|
|||
|
"13/13 [==============================] - 0s 28ms/step - loss: 1.0306 - val_loss: 1.8233\n",
|
|||
|
"Epoch 99/160\n",
|
|||
|
"13/13 [==============================] - 0s 29ms/step - loss: 1.0348 - val_loss: 1.8268\n",
|
|||
|
"Epoch 100/160\n",
|
|||
|
"13/13 [==============================] - 0s 35ms/step - loss: 1.0165 - val_loss: 1.8276\n",
|
|||
|
"Epoch 101/160\n",
|
|||
|
"13/13 [==============================] - 0s 32ms/step - loss: 1.0826 - val_loss: 1.8275\n",
|
|||
|
"Epoch 102/160\n",
|
|||
|
"13/13 [==============================] - 0s 32ms/step - loss: 1.0631 - val_loss: 1.8269\n",
|
|||
|
"Epoch 103/160\n",
|
|||
|
"13/13 [==============================] - 0s 31ms/step - loss: 0.9980 - val_loss: 1.8268\n",
|
|||
|
"Epoch 104/160\n",
|
|||
|
"13/13 [==============================] - 0s 29ms/step - loss: 1.0245 - val_loss: 1.8270\n",
|
|||
|
"Epoch 105/160\n",
|
|||
|
"13/13 [==============================] - 0s 29ms/step - loss: 1.1240 - val_loss: 1.8272\n",
|
|||
|
"Epoch 106/160\n",
|
|||
|
"13/13 [==============================] - 0s 28ms/step - loss: 1.0099 - val_loss: 1.8275\n",
|
|||
|
"Epoch 107/160\n",
|
|||
|
"13/13 [==============================] - 0s 32ms/step - loss: 1.0435 - val_loss: 1.8272\n",
|
|||
|
"Epoch 108/160\n",
|
|||
|
"13/13 [==============================] - 0s 32ms/step - loss: 1.0166 - val_loss: 1.8257\n",
|
|||
|
"Epoch 109/160\n",
|
|||
|
"13/13 [==============================] - 0s 33ms/step - loss: 1.0462 - val_loss: 1.8256\n",
|
|||
|
"Epoch 110/160\n",
|
|||
|
"13/13 [==============================] - 0s 29ms/step - loss: 1.1261 - val_loss: 1.8256\n",
|
|||
|
"Epoch 111/160\n",
|
|||
|
"13/13 [==============================] - 0s 29ms/step - loss: 1.0418 - val_loss: 1.8256\n",
|
|||
|
"Epoch 112/160\n",
|
|||
|
"13/13 [==============================] - 0s 27ms/step - loss: 0.9933 - val_loss: 1.8255\n",
|
|||
|
"Epoch 113/160\n",
|
|||
|
"13/13 [==============================] - 0s 28ms/step - loss: 1.0758 - val_loss: 1.8255\n",
|
|||
|
"Epoch 114/160\n",
|
|||
|
"13/13 [==============================] - 0s 28ms/step - loss: 1.0435 - val_loss: 1.8254\n",
|
|||
|
"Epoch 115/160\n",
|
|||
|
"13/13 [==============================] - 0s 28ms/step - loss: 1.0265 - val_loss: 1.8254\n",
|
|||
|
"Epoch 116/160\n",
|
|||
|
"13/13 [==============================] - 0s 28ms/step - loss: 1.0268 - val_loss: 1.8254\n",
|
|||
|
"Epoch 117/160\n",
|
|||
|
"13/13 [==============================] - 0s 28ms/step - loss: 1.0709 - val_loss: 1.8254\n",
|
|||
|
"Epoch 118/160\n",
|
|||
|
"13/13 [==============================] - 0s 36ms/step - loss: 1.0304 - val_loss: 1.8253\n",
|
|||
|
"Epoch 119/160\n",
|
|||
|
"13/13 [==============================] - 0s 25ms/step - loss: 1.0074 - val_loss: 1.8254\n",
|
|||
|
"Epoch 120/160\n",
|
|||
|
"13/13 [==============================] - 0s 29ms/step - loss: 1.0375 - val_loss: 1.8254\n",
|
|||
|
"Epoch 121/160\n",
|
|||
|
"13/13 [==============================] - 0s 29ms/step - loss: 1.0196 - val_loss: 1.8254\n",
|
|||
|
"Epoch 122/160\n",
|
|||
|
"13/13 [==============================] - 0s 28ms/step - loss: 1.0706 - val_loss: 1.8254\n",
|
|||
|
"Epoch 123/160\n",
|
|||
|
"13/13 [==============================] - 0s 29ms/step - loss: 1.0120 - val_loss: 1.8254\n",
|
|||
|
"Epoch 124/160\n",
|
|||
|
"13/13 [==============================] - 0s 28ms/step - loss: 1.0962 - val_loss: 1.8254\n",
|
|||
|
"Epoch 125/160\n",
|
|||
|
"13/13 [==============================] - 0s 28ms/step - loss: 0.9942 - val_loss: 1.8254\n",
|
|||
|
"Epoch 126/160\n",
|
|||
|
"13/13 [==============================] - 0s 33ms/step - loss: 1.0419 - val_loss: 1.8254\n",
|
|||
|
"Epoch 127/160\n",
|
|||
|
"13/13 [==============================] - 0s 32ms/step - loss: 1.1072 - val_loss: 1.8254\n",
|
|||
|
"Epoch 128/160\n",
|
|||
|
"13/13 [==============================] - 0s 33ms/step - loss: 1.0153 - val_loss: 1.8254\n",
|
|||
|
"Epoch 129/160\n",
|
|||
|
"13/13 [==============================] - 0s 29ms/step - loss: 1.0324 - val_loss: 1.8254\n",
|
|||
|
"Epoch 130/160\n",
|
|||
|
"13/13 [==============================] - 0s 28ms/step - loss: 1.0363 - val_loss: 1.8254\n",
|
|||
|
"Epoch 131/160\n",
|
|||
|
"13/13 [==============================] - 0s 35ms/step - loss: 1.0624 - val_loss: 1.8254\n",
|
|||
|
"Epoch 132/160\n",
|
|||
|
"13/13 [==============================] - 0s 34ms/step - loss: 1.1191 - val_loss: 1.8254\n",
|
|||
|
"Epoch 133/160\n",
|
|||
|
"13/13 [==============================] - 0s 32ms/step - loss: 1.0297 - val_loss: 1.8254\n",
|
|||
|
"Epoch 134/160\n",
|
|||
|
"13/13 [==============================] - 0s 28ms/step - loss: 1.0494 - val_loss: 1.8254\n",
|
|||
|
"Epoch 135/160\n",
|
|||
|
"13/13 [==============================] - 0s 28ms/step - loss: 1.0162 - val_loss: 1.8254\n",
|
|||
|
"Epoch 136/160\n",
|
|||
|
"13/13 [==============================] - 0s 32ms/step - loss: 0.9976 - val_loss: 1.8254\n",
|
|||
|
"Epoch 137/160\n",
|
|||
|
"13/13 [==============================] - 0s 32ms/step - loss: 1.0401 - val_loss: 1.8254\n",
|
|||
|
"Epoch 138/160\n",
|
|||
|
"13/13 [==============================] - 0s 28ms/step - loss: 0.9879 - val_loss: 1.8254\n",
|
|||
|
"Epoch 139/160\n",
|
|||
|
"13/13 [==============================] - 0s 28ms/step - loss: 1.0398 - val_loss: 1.8254\n",
|
|||
|
"Epoch 140/160\n",
|
|||
|
"13/13 [==============================] - 0s 28ms/step - loss: 1.0297 - val_loss: 1.8254\n",
|
|||
|
"Epoch 141/160\n",
|
|||
|
"13/13 [==============================] - 0s 28ms/step - loss: 1.0344 - val_loss: 1.8254\n",
|
|||
|
"Epoch 142/160\n",
|
|||
|
"13/13 [==============================] - 0s 32ms/step - loss: 1.0372 - val_loss: 1.8254\n",
|
|||
|
"Epoch 143/160\n",
|
|||
|
"13/13 [==============================] - 0s 34ms/step - loss: 1.0513 - val_loss: 1.8254\n",
|
|||
|
"Epoch 144/160\n",
|
|||
|
"13/13 [==============================] - 0s 34ms/step - loss: 1.0447 - val_loss: 1.8254\n",
|
|||
|
"Epoch 145/160\n",
|
|||
|
"13/13 [==============================] - 0s 26ms/step - loss: 1.0532 - val_loss: 1.8254\n",
|
|||
|
"Epoch 146/160\n",
|
|||
|
"13/13 [==============================] - 0s 29ms/step - loss: 1.0670 - val_loss: 1.8254\n",
|
|||
|
"Epoch 147/160\n",
|
|||
|
"13/13 [==============================] - 0s 28ms/step - loss: 1.0499 - val_loss: 1.8254\n",
|
|||
|
"Epoch 148/160\n",
|
|||
|
"13/13 [==============================] - 0s 34ms/step - loss: 1.0295 - val_loss: 1.8254\n",
|
|||
|
"Epoch 149/160\n",
|
|||
|
"13/13 [==============================] - 0s 27ms/step - loss: 1.1065 - val_loss: 1.8254\n",
|
|||
|
"Epoch 150/160\n",
|
|||
|
"13/13 [==============================] - 0s 27ms/step - loss: 1.1115 - val_loss: 1.8254\n",
|
|||
|
"Epoch 151/160\n",
|
|||
|
"13/13 [==============================] - 0s 32ms/step - loss: 1.1047 - val_loss: 1.8254\n",
|
|||
|
"Epoch 152/160\n",
|
|||
|
"13/13 [==============================] - 0s 26ms/step - loss: 1.0098 - val_loss: 1.8254\n",
|
|||
|
"Epoch 153/160\n",
|
|||
|
"13/13 [==============================] - 0s 34ms/step - loss: 0.9954 - val_loss: 1.8254\n",
|
|||
|
"Epoch 154/160\n",
|
|||
|
"13/13 [==============================] - 0s 27ms/step - loss: 1.0815 - val_loss: 1.8254\n",
|
|||
|
"Epoch 155/160\n",
|
|||
|
"13/13 [==============================] - 0s 28ms/step - loss: 1.1248 - val_loss: 1.8254\n",
|
|||
|
"Epoch 156/160\n",
|
|||
|
"13/13 [==============================] - 0s 35ms/step - loss: 1.0116 - val_loss: 1.8254\n",
|
|||
|
"Epoch 157/160\n",
|
|||
|
"13/13 [==============================] - 0s 31ms/step - loss: 1.0502 - val_loss: 1.8254\n",
|
|||
|
"Epoch 158/160\n",
|
|||
|
"13/13 [==============================] - 0s 33ms/step - loss: 1.0578 - val_loss: 1.8254\n",
|
|||
|
"Epoch 159/160\n",
|
|||
|
"13/13 [==============================] - 0s 32ms/step - loss: 1.0356 - val_loss: 1.8254\n",
|
|||
|
"Epoch 160/160\n",
|
|||
|
"13/13 [==============================] - 0s 27ms/step - loss: 1.0162 - val_loss: 1.8254\n"
|
|||
|
]
|
|||
|
}
|
|||
|
],
|
|||
|
"source": [
|
|||
|
"trainable_model.compile(optimizer='adam', loss=None)\n",
|
|||
|
"hist = trainable_model.fit([X, Y[0], Y[1], Y[2], Y[3]], epochs=160, batch_size=8, verbose=1, \n",
|
|||
|
" validation_data=[np.expand_dims(valid[feature_cols].values, axis=1), Y_valid[0], Y_valid[1], Y_valid[2], Y_valid[3]],\n",
|
|||
|
" callbacks=[reduce_lr]\n",
|
|||
|
" )"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 27,
|
|||
|
"id": "67bfbe88-5f2c-4659-b2dc-eb9f1b824d04",
|
|||
|
"metadata": {},
|
|||
|
"outputs": [
|
|||
|
{
|
|||
|
"data": {
|
|||
|
"text/plain": [
|
|||
|
"[array([[0.00237915],\n",
|
|||
|
" [0.21877757],\n",
|
|||
|
" [0.00211415],\n",
|
|||
|
" [0.00235748],\n",
|
|||
|
" [0.2187585 ],\n",
|
|||
|
" [0.25013232],\n",
|
|||
|
" [0.00218698],\n",
|
|||
|
" [0.00213578],\n",
|
|||
|
" [0.0021604 ],\n",
|
|||
|
" [0.00213698],\n",
|
|||
|
" [0.00215602],\n",
|
|||
|
" [0.00211859],\n",
|
|||
|
" [0.00211859]], dtype=float32),\n",
|
|||
|
" array([[0.26313323],\n",
|
|||
|
" [0.43726084],\n",
|
|||
|
" [0.257788 ],\n",
|
|||
|
" [0.2622419 ],\n",
|
|||
|
" [0.43731606],\n",
|
|||
|
" [0.41615662],\n",
|
|||
|
" [0.2588436 ],\n",
|
|||
|
" [0.2605151 ],\n",
|
|||
|
" [0.2610975 ],\n",
|
|||
|
" [0.26035452],\n",
|
|||
|
" [0.25860977],\n",
|
|||
|
" [0.25888485],\n",
|
|||
|
" [0.2590733 ]], dtype=float32),\n",
|
|||
|
" array([[0.03315076],\n",
|
|||
|
" [0.43969226],\n",
|
|||
|
" [0.0066632 ],\n",
|
|||
|
" [0.0311569 ],\n",
|
|||
|
" [0.4396916 ],\n",
|
|||
|
" [0.46122804],\n",
|
|||
|
" [0.01751196],\n",
|
|||
|
" [0.0046435 ],\n",
|
|||
|
" [0.00397068],\n",
|
|||
|
" [0.00480857],\n",
|
|||
|
" [0.01166728],\n",
|
|||
|
" [0.00597936],\n",
|
|||
|
" [0.00580207]], dtype=float32),\n",
|
|||
|
" array([[0.2627051 ],\n",
|
|||
|
" [0.25722986],\n",
|
|||
|
" [0.30297792],\n",
|
|||
|
" [0.26330546],\n",
|
|||
|
" [0.25718838],\n",
|
|||
|
" [0.30138326],\n",
|
|||
|
" [0.27484083],\n",
|
|||
|
" [0.3198207 ],\n",
|
|||
|
" [0.3352574 ],\n",
|
|||
|
" [0.31860778],\n",
|
|||
|
" [0.28594404],\n",
|
|||
|
" [0.30712652],\n",
|
|||
|
" [0.3081199 ]], dtype=float32)]"
|
|||
|
]
|
|||
|
},
|
|||
|
"execution_count": 27,
|
|||
|
"metadata": {},
|
|||
|
"output_type": "execute_result"
|
|||
|
}
|
|||
|
],
|
|||
|
"source": [
|
|||
|
"rst = prediction_model.predict(np.expand_dims(test[feature_cols], axis=1))\n",
|
|||
|
"rst"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 28,
|
|||
|
"id": "7de501e9-05a2-424c-a5f4-85d43ad37592",
|
|||
|
"metadata": {},
|
|||
|
"outputs": [
|
|||
|
{
|
|||
|
"data": {
|
|||
|
"text/plain": [
|
|||
|
"[0.44671712167235617,\n",
|
|||
|
" 0.995773503303174,\n",
|
|||
|
" 0.8775154468883085,\n",
|
|||
|
" 0.9863306026616467]"
|
|||
|
]
|
|||
|
},
|
|||
|
"execution_count": 28,
|
|||
|
"metadata": {},
|
|||
|
"output_type": "execute_result"
|
|||
|
}
|
|||
|
],
|
|||
|
"source": [
|
|||
|
"[np.exp(K.get_value(log_var[0]))**0.5 for log_var in trainable_model.layers[-1].log_vars]"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 29,
|
|||
|
"id": "b0d5d8ad-aadd-4218-b5b7-9691a2d3eeef",
|
|||
|
"metadata": {},
|
|||
|
"outputs": [],
|
|||
|
"source": [
|
|||
|
"pred_rst = pd.DataFrame.from_records(np.squeeze(np.asarray(rst), axis=2).T, columns=out_cols)"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 30,
|
|||
|
"id": "0a2bcb45-da86-471b-a61d-314e29430d6a",
|
|||
|
"metadata": {},
|
|||
|
"outputs": [],
|
|||
|
"source": [
|
|||
|
"real_rst = test[out_cols].copy()"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 31,
|
|||
|
"id": "e124f7c0-fdd5-43b9-b649-ff7d9dd59641",
|
|||
|
"metadata": {},
|
|||
|
"outputs": [],
|
|||
|
"source": [
|
|||
|
"for col in out_cols:\n",
|
|||
|
" pred_rst[col] = pred_rst[col] * (maxs[col] - mins[col]) + mins[col]\n",
|
|||
|
" real_rst[col] = real_rst[col] * (maxs[col] - mins[col]) + mins[col]"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 32,
|
|||
|
"id": "5c69d03b-34fd-4dbf-aec6-c15093bb22ab",
|
|||
|
"metadata": {},
|
|||
|
"outputs": [
|
|||
|
{
|
|||
|
"data": {
|
|||
|
"text/plain": [
|
|||
|
"Index(['碳材料结构特征-比表面积', '碳材料结构特征-总孔体积', '碳材料结构特征-微孔体积', '碳材料结构特征-平均孔径'], dtype='object')"
|
|||
|
]
|
|||
|
},
|
|||
|
"execution_count": 32,
|
|||
|
"metadata": {},
|
|||
|
"output_type": "execute_result"
|
|||
|
}
|
|||
|
],
|
|||
|
"source": [
|
|||
|
"real_rst.columns"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 33,
|
|||
|
"id": "21739f82-d82a-4bde-8537-9504b68a96d5",
|
|||
|
"metadata": {},
|
|||
|
"outputs": [],
|
|||
|
"source": [
|
|||
|
"y_pred_pm25 = pred_rst['碳材料结构特征-比表面积'].values.reshape(-1,)\n",
|
|||
|
"y_pred_pm10 = pred_rst['碳材料结构特征-总孔体积'].values.reshape(-1,)\n",
|
|||
|
"y_pred_so2 = pred_rst['碳材料结构特征-微孔体积'].values.reshape(-1,)\n",
|
|||
|
"y_pred_no2 = pred_rst['碳材料结构特征-平均孔径'].values.reshape(-1,)\n",
|
|||
|
"y_true_pm25 = real_rst['碳材料结构特征-比表面积'].values.reshape(-1,)\n",
|
|||
|
"y_true_pm10 = real_rst['碳材料结构特征-总孔体积'].values.reshape(-1,)\n",
|
|||
|
"y_true_so2 = real_rst['碳材料结构特征-微孔体积'].values.reshape(-1,)\n",
|
|||
|
"y_true_no2 = real_rst['碳材料结构特征-平均孔径'].values.reshape(-1,)"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 34,
|
|||
|
"id": "26ea6cfa-efad-443c-9dd9-844f8be42b91",
|
|||
|
"metadata": {},
|
|||
|
"outputs": [],
|
|||
|
"source": [
|
|||
|
"from sklearn.metrics import mean_squared_error, mean_absolute_error, r2_score, mean_absolute_percentage_error"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 35,
|
|||
|
"id": "28072e7c-c9d5-4ff6-940d-e94ae879afc9",
|
|||
|
"metadata": {},
|
|||
|
"outputs": [],
|
|||
|
"source": [
|
|||
|
"def print_eva(y_true, y_pred, tp):\n",
|
|||
|
" MSE = mean_squared_error(y_true, y_pred)\n",
|
|||
|
" RMSE = np.sqrt(MSE)\n",
|
|||
|
" MAE = mean_absolute_error(y_true, y_pred)\n",
|
|||
|
" MAPE = mean_absolute_percentage_error(y_true, y_pred)\n",
|
|||
|
" R_2 = r2_score(y_true, y_pred)\n",
|
|||
|
" print(f\"COL: {tp}, MSE: {format(MSE, '.2E')}\", end=',')\n",
|
|||
|
" print(f'RMSE: {round(RMSE, 4)}', end=',')\n",
|
|||
|
" print(f'MAPE: {round(MAPE, 4) * 100} %', end=',')\n",
|
|||
|
" print(f'MAE: {round(MAE, 4)}', end=',')\n",
|
|||
|
" print(f'R_2: {round(R_2, 4)}')\n",
|
|||
|
" return [MSE, RMSE, MAE, MAPE, R_2]"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 36,
|
|||
|
"id": "4ec4caa9-7c46-4fc8-a94b-cb659e924304",
|
|||
|
"metadata": {},
|
|||
|
"outputs": [
|
|||
|
{
|
|||
|
"name": "stdout",
|
|||
|
"output_type": "stream",
|
|||
|
"text": [
|
|||
|
"COL: 比表面积, MSE: 2.59E+06,RMSE: 1609.7549,MAPE: 90.44 %,MAE: 1456.9479,R_2: -3.4577\n",
|
|||
|
"COL: 总孔体积, MSE: 2.74E-01,RMSE: 0.5234,MAPE: 36.559999999999995 %,MAE: 0.4001,R_2: 0.1427\n",
|
|||
|
"COL: 微孔体积, MSE: 1.45E-01,RMSE: 0.3802,MAPE: 77.27000000000001 %,MAE: 0.324,R_2: -2.0216\n",
|
|||
|
"COL: 平均孔径, MSE: 1.44E+00,RMSE: 1.201,MAPE: 42.24 %,MAE: 1.0489,R_2: -0.0048\n"
|
|||
|
]
|
|||
|
}
|
|||
|
],
|
|||
|
"source": [
|
|||
|
"pm25_eva = print_eva(y_true_pm25, y_pred_pm25, tp='比表面积')\n",
|
|||
|
"pm10_eva = print_eva(y_true_pm10, y_pred_pm10, tp='总孔体积')\n",
|
|||
|
"so2_eva = print_eva(y_true_so2, y_pred_so2, tp='微孔体积')\n",
|
|||
|
"nox_eva = print_eva(y_true_no2, y_pred_no2, tp='平均孔径')"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": null,
|
|||
|
"id": "ac4a4339-ec7d-4266-8197-5276c2395288",
|
|||
|
"metadata": {},
|
|||
|
"outputs": [],
|
|||
|
"source": []
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": null,
|
|||
|
"id": "f15cbb91-1ce7-4fb0-979a-a4bdc452a1ec",
|
|||
|
"metadata": {},
|
|||
|
"outputs": [],
|
|||
|
"source": []
|
|||
|
}
|
|||
|
],
|
|||
|
"metadata": {
|
|||
|
"kernelspec": {
|
|||
|
"display_name": "Python 3 (ipykernel)",
|
|||
|
"language": "python",
|
|||
|
"name": "python3"
|
|||
|
},
|
|||
|
"language_info": {
|
|||
|
"codemirror_mode": {
|
|||
|
"name": "ipython",
|
|||
|
"version": 3
|
|||
|
},
|
|||
|
"file_extension": ".py",
|
|||
|
"mimetype": "text/x-python",
|
|||
|
"name": "python",
|
|||
|
"nbconvert_exporter": "python",
|
|||
|
"pygments_lexer": "ipython3",
|
|||
|
"version": "3.8.16"
|
|||
|
}
|
|||
|
},
|
|||
|
"nbformat": 4,
|
|||
|
"nbformat_minor": 5
|
|||
|
}
|