{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 数据"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
""
],
"text/vnd.plotly.v1+html": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# 导入 TensorFlow\n",
"import tensorflow as tf\n",
"# 即显模式\n",
"tf.enable_eager_execution()\n",
"import plotly.plotly as py\n",
"import plotly\n",
"import plotly.graph_objs as go\n",
"plotly.offline.init_notebook_mode(connected=True)\n",
"import numpy as np\n",
"tf.set_random_seed(123)\n",
"\n",
"# 生成数据\n",
"n_example = 100\n",
"X = tf.random_normal([n_example])\n",
"# 称重误差\n",
"noise = tf.random_uniform([n_example], -0.5, 0.5)\n",
"Y = X * 2 + noise\n",
"\n",
"# 训练集\n",
"train_x = X[:80]\n",
"train_y = Y[:80]\n",
"\n",
"# 测试集\n",
"test_x = X[80:]\n",
"test_y = Y[80:]"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"