import\u0020numpy\u0020as\u0020np\nimport\u0020pandas\u0020as\u0020pd\n\n#\u0020读取训练数据\ndata\u0020=\u0020pd.read_excel('C题.xlsx')\nX\u0020=\u0020data[['接收距离(cm)',\u0020'热风速度(r/min)']].values\ny\u0020=\u0020data[['厚度mm',\u0020'孔隙率(%)',\u0020'压缩回弹性率(%)']].values\n\n#\u0020定义激活函数(sigmoid函数)\ndef\u0020sigmoid(x):\n\u0020\u0020return\u00201\u0020/\u0020(1\u0020+\u0020np.exp(-x))\n\n#\u0020定义激活函数的导数\ndef\u0020sigmoid_derivative(x):\n\u0020\u0020return\u0020x\u0020*\u0020(1\u0020-\u0020x)\n\n#\u0020初始化权重和偏置\nnp.random.seed(0)\nweights1\u0020=\u00202\u0020*\u0020np.random.random((2, 4))\u0020-\u00201\nweights2\u0020=\u00202\u0020*\u0020np.random.random((4, 3))\u0020-\u00201\nbias1\u0020=\u0020np.zeros((1, 4))\nbias2\u0020=\u0020np.zeros((1, 3))\n\n#\u0020定义训练迭代次数和学习率\nepochs\u0020=\u002010000\nlearning_rate\u0020=\u00200.1\n\n#\u0020训练模型\nfor\u0020i\u0020in\u0020range(epochs):\n\u0020\u0020#\u0020前向传播\n\u0020\u0020layer1_output\u0020=\u0020sigmoid(np.dot(X, weights1)\u0020+\u0020bias1)\n\u0020\u0020layer2_output\u0020=\u0020sigmoid(np.dot(layer1_output, weights2)\u0020+\u0020bias2)\n\n\u0020\u0020#\u0020计算误差\n\u0020\u0020layer2_error\u0020=\u0020y\u0020-\u0020layer2_output\n\u0020\u0020if\u0020i\u0020%\u00201000\u0020==\u00200:\n\u0020\u0020\u0020\u0020print('Error\u0020after',\u0020i, 'epochs:', np.mean(np.abs(layer2_error)))\n\n\u0020\u0020#\u0020反向传播\n\u0020\u0020layer2_delta\u0020=\u0020layer2_error\u0020*\u0020sigmoid_derivative(layer2_output)\n\u0020\u0020layer1_error\u0020=\u0020layer2_delta.dot(weights2.T)\n\u0020\u0020layer1_delta\u0020=\u0020layer1_error\u0020*\u0020sigmoid_derivative(layer1_output)\n\n\u0020\u0020#\u0020更新权重和偏置\n\u0020\u0020weights2\u0020+=\u0020layer1_output.T.dot(layer2_delta)\u0020*\u0020learning_rate\n\u0020\u0020bias2\u0020+=\u0020np.sum(layer2_delta, axis=0, keepdims=True)\u0020*\u0020learning_rate\n\u0020\u0020weights1\u0020+=\u0020X.T.dot(layer1_delta)\u0020*\u0020learning_rate\n\u0020\u0020bias1\u0020+=\u0020np.sum(layer1_delta, axis=0, keepdims=True)\u0020*\u0020learning_rate\n\n#\u0020测试模型\ntest_data\u0020=\u0020pd.read_excel('C题.xlsx')\nX_test\u0020=\u0020data[['接收距离(cm)',\u0020'热风速度(r/min)']].values\ny_true\u0020=\u0020data[['厚度mm',\u0020'孔隙率(%)',\u0020'压缩回弹性率(%)']].values\n\nlayer1_output_test\u0020=\u0020sigmoid(np.dot(X_test, weights1)\u0020+\u0020bias1)\nlayer2_output_test\u0020=\u0020sigmoid(np.dot(layer1_output_test, weights2)\u0020+\u0020bias2)\n\nprint('Predicted\u0020Output:', layer2_output_test)\nprint('True\u0020Output:', y_true)\n\nimport\u0020pickle\n\n#\u0020保存模型\nwith\u0020open('model.pkl',\u0020'wb')\u0020as\u0020file:\n\u0020\u0020pickle.dump((weights1, weights2, bias1, bias2), file)\n\n#\u0020读取新的Excel数据\nnew_data\u0020=\u0020pd.read_excel('new_data.xlsx')\nX_new\u0020=\u0020new_data[['接收距离(cm)',\u0020'热风速度(r/min)']].values\n\n#\u0020加载模型\nwith\u0020open('model.pkl',\u0020'rb')\u0020as\u0020file:\n\u0020\u0020weights1, weights2, bias1, bias2\u0020=\u0020pickle.load(file)\n\n#\u0020进行预测\nlayer1_output_new\u0020=\u0020sigmoid(np.dot(X_new, weights1)\u0020+\u0020bias1)\nlayer2_output_new\u0020=\u0020sigmoid(np.dot(layer1_output_new, weights2)\u0020+\u0020bias2)\n\nprint('Predicted\u0020Output:', layer2_output_new)\n

基于Python的神经网络模型训练与预测:用Excel数据进行材料特性预测

原文地址: https://www.cveoy.top/t/topic/qqAV 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录