y_data= [0.23698630444594898, 0.3451405285717712, 0.2946184606063095, 0.3342385728213711] Y= Tensor("add:0", shape=(4,), dtype=float32) node { name: "random_uniform/shape" op: "Const" attr { key: "dtype" value { type: DT_INT32 } } attr { key: "value" value { tensor { dtype: DT_INT32 tensor_shape { dim { size: 1 } } int_val: 1 } } } } node { name: "random_uniform/min" op: "Const" attr { key: "dtype" value { type: DT_FLOAT } } attr { key: "value" value { tensor { dtype: DT_FLOAT tensor_shape { } float_val: -1.0 } } } } node { name: "random_uniform/max" op: "Const" attr { key: "dtype" value { type: DT_FLOAT } } attr { key: "value" value { tensor { dtype: DT_FLOAT tensor_shape { } float_val: 1.0 } } } } node { name: "random_uniform/RandomUniform" op: "RandomUniform" input: "random_uniform/shape" attr { key: "T" value { type: DT_INT32 } } attr { key: "dtype" value { type: DT_FLOAT } } attr { key: "seed" value { i: 0 } } attr { key: "seed2" value { i: 0 } } } node { name: "random_uniform/sub" op: "Sub" input: "random_uniform/max" input: "random_uniform/min" attr { key: "T" value { type: DT_FLOAT } } } node { name: "random_uniform/mul" op: "Mul" input: "random_uniform/RandomUniform" input: "random_uniform/sub" attr { key: "T" value { type: DT_FLOAT } } } node { name: "random_uniform" op: "Add" input: "random_uniform/mul" input: "random_uniform/min" attr { key: "T" value { type: DT_FLOAT } } } node { name: "W" op: "Variable" attr { key: "container" value { s: "" } } attr { key: "dtype" value { type: DT_FLOAT } } attr { key: "shape" value { shape { dim { size: 1 } } } } attr { key: "shared_name" value { s: "" } } } node { name: "W/Assign" op: "Assign" input: "W" input: "random_uniform" attr { key: "T" value { type: DT_FLOAT } } attr { key: "_class" value { list { s: "loc:@W" } } } attr { key: "use_locking" value { b: true } } attr { key: "validate_shape" value { b: true } } } node { name: "W/read" op: "Identity" input: "W" attr { key: "T" value { type: DT_FLOAT } } attr { key: "_class" value { list { s: "loc:@W" } } } } node { name: "zeros" op: "Const" attr { key: "dtype" value { type: DT_FLOAT } } attr { key: "value" value { tensor { dtype: DT_FLOAT tensor_shape { dim { size: 1 } } float_val: 0.0 } } } } node { name: "b" op: "Variable" attr { key: "container" value { s: "" } } attr { key: "dtype" value { type: DT_FLOAT } } attr { key: "shape" value { shape { dim { size: 1 } } } } attr { key: "shared_name" value { s: "" } } } node { name: "b/Assign" op: "Assign" input: "b" input: "zeros" attr { key: "T" value { type: DT_FLOAT } } attr { key: "_class" value { list { s: "loc:@b" } } } attr { key: "use_locking" value { b: true } } attr { key: "validate_shape" value { b: true } } } node { name: "b/read" op: "Identity" input: "b" attr { key: "T" value { type: DT_FLOAT } } attr { key: "_class" value { list { s: "loc:@b" } } } } node { name: "mul/y" op: "Const" attr { key: "dtype" value { type: DT_FLOAT } } attr { key: "value" value { tensor { dtype: DT_FLOAT tensor_shape { dim { size: 4 } } tensor_content: "g\3216\277\370h\220=\352\374\351>\343\305\306>" } } } } node { name: "mul" op: "Mul" input: "W/read" input: "mul/y" attr { key: "T" value { type: DT_FLOAT } } } node { name: "add" op: "Add" input: "mul" input: "b/read" attr { key: "T" value { type: DT_FLOAT } } } node { name: "sub/y" op: "Const" attr { key: "dtype" value { type: DT_FLOAT } } attr { key: "value" value { tensor { dtype: DT_FLOAT tensor_shape { dim { size: 4 } } tensor_content: "\212\254r>B\266\260>;\330\226>Q!\253>" } } } } node { name: "sub" op: "Sub" input: "add" input: "sub/y" attr { key: "T" value { type: DT_FLOAT } } } node { name: "Square" op: "Square" input: "sub" attr { key: "T" value { type: DT_FLOAT } } } node { name: "Const" op: "Const" attr { key: "dtype" value { type: DT_INT32 } } attr { key: "value" value { tensor { dtype: DT_INT32 tensor_shape { dim { size: 1 } } int_val: 0 } } } } node { name: "loss" op: "Mean" input: "Square" input: "Const" attr { key: "T" value { type: DT_FLOAT } } attr { key: "Tidx" value { type: DT_INT32 } } attr { key: "keep_dims" value { b: false } } } node { name: "gradients/Shape" op: "Const" attr { key: "dtype" value { type: DT_INT32 } } attr { key: "value" value { tensor { dtype: DT_INT32 tensor_shape { dim { } } } } } } node { name: "gradients/Const" op: "Const" attr { key: "dtype" value { type: DT_FLOAT } } attr { key: "value" value { tensor { dtype: DT_FLOAT tensor_shape { } float_val: 1.0 } } } } node { name: "gradients/Fill" op: "Fill" input: "gradients/Shape" input: "gradients/Const" attr { key: "T" value { type: DT_FLOAT } } } node { name: "gradients/loss_grad/Reshape/shape" op: "Const" attr { key: "dtype" value { type: DT_INT32 } } attr { key: "value" value { tensor { dtype: DT_INT32 tensor_shape { dim { size: 1 } } int_val: 1 } } } } node { name: "gradients/loss_grad/Reshape" op: "Reshape" input: "gradients/Fill" input: "gradients/loss_grad/Reshape/shape" attr { key: "T" value { type: DT_FLOAT } } attr { key: "Tshape" value { type: DT_INT32 } } } node { name: "gradients/loss_grad/Tile/multiples" op: "Const" attr { key: "dtype" value { type: DT_INT32 } } attr { key: "value" value { tensor { dtype: DT_INT32 tensor_shape { dim { size: 1 } } int_val: 4 } } } } node { name: "gradients/loss_grad/Tile" op: "Tile" input: "gradients/loss_grad/Reshape" input: "gradients/loss_grad/Tile/multiples" attr { key: "T" value { type: DT_FLOAT } } attr { key: "Tmultiples" value { type: DT_INT32 } } } node { name: "gradients/loss_grad/Shape" op: "Const" attr { key: "dtype" value { type: DT_INT32 } } attr { key: "value" value { tensor { dtype: DT_INT32 tensor_shape { dim { size: 1 } } int_val: 4 } } } } node { name: "gradients/loss_grad/Shape_1" op: "Const" attr { key: "dtype" value { type: DT_INT32 } } attr { key: "value" value { tensor { dtype: DT_INT32 tensor_shape { dim { } } } } } } node { name: "gradients/loss_grad/Const" op: "Const" attr { key: "dtype" value { type: DT_INT32 } } attr { key: "value" value { tensor { dtype: DT_INT32 tensor_shape { dim { size: 1 } } int_val: 0 } } } } node { name: "gradients/loss_grad/Prod" op: "Prod" input: "gradients/loss_grad/Shape" input: "gradients/loss_grad/Const" attr { key: "T" value { type: DT_INT32 } } attr { key: "Tidx" value { type: DT_INT32 } } attr { key: "keep_dims" value { b: false } } } node { name: "gradients/loss_grad/Const_1" op: "Const" attr { key: "dtype" value { type: DT_INT32 } } attr { key: "value" value { tensor { dtype: DT_INT32 tensor_shape { dim { size: 1 } } int_val: 0 } } } } node { name: "gradients/loss_grad/Prod_1" op: "Prod" input: "gradients/loss_grad/Shape_1" input: "gradients/loss_grad/Const_1" attr { key: "T" value { type: DT_INT32 } } attr { key: "Tidx" value { type: DT_INT32 } } attr { key: "keep_dims" value { b: false } } } node { name: "gradients/loss_grad/Maximum/y" op: "Const" attr { key: "dtype" value { type: DT_INT32 } } attr { key: "value" value { tensor { dtype: DT_INT32 tensor_shape { } int_val: 1 } } } } node { name: "gradients/loss_grad/Maximum" op: "Maximum" input: "gradients/loss_grad/Prod_1" input: "gradients/loss_grad/Maximum/y" attr { key: "T" value { type: DT_INT32 } } } node { name: "gradients/loss_grad/floordiv" op: "Div" input: "gradients/loss_grad/Prod" input: "gradients/loss_grad/Maximum" attr { key: "T" value { type: DT_INT32 } } } node { name: "gradients/loss_grad/Cast" op: "Cast" input: "gradients/loss_grad/floordiv" attr { key: "DstT" value { type: DT_FLOAT } } attr { key: "SrcT" value { type: DT_INT32 } } } node { name: "gradients/loss_grad/truediv" op: "Div" input: "gradients/loss_grad/Tile" input: "gradients/loss_grad/Cast" attr { key: "T" value { type: DT_FLOAT } } } node { name: "gradients/Square_grad/mul/x" op: "Const" input: "^gradients/loss_grad/truediv" attr { key: "dtype" value { type: DT_FLOAT } } attr { key: "value" value { tensor { dtype: DT_FLOAT tensor_shape { } float_val: 2.0 } } } } node { name: "gradients/Square_grad/mul" op: "Mul" input: "gradients/Square_grad/mul/x" input: "sub" attr { key: "T" value { type: DT_FLOAT } } } node { name: "gradients/Square_grad/mul_1" op: "Mul" input: "gradients/loss_grad/truediv" input: "gradients/Square_grad/mul" attr { key: "T" value { type: DT_FLOAT } } } node { name: "gradients/sub_grad/Shape" op: "Const" attr { key: "dtype" value { type: DT_INT32 } } attr { key: "value" value { tensor { dtype: DT_INT32 tensor_shape { dim { size: 1 } } int_val: 4 } } } } node { name: "gradients/sub_grad/Shape_1" op: "Const" attr { key: "dtype" value { type: DT_INT32 } } attr { key: "value" value { tensor { dtype: DT_INT32 tensor_shape { dim { size: 1 } } int_val: 4 } } } } node { name: "gradients/sub_grad/BroadcastGradientArgs" op: "BroadcastGradientArgs" input: "gradients/sub_grad/Shape" input: "gradients/sub_grad/Shape_1" attr { key: "T" value { type: DT_INT32 } } } node { name: "gradients/sub_grad/Sum" op: "Sum" input: "gradients/Square_grad/mul_1" input: "gradients/sub_grad/BroadcastGradientArgs" attr { key: "T" value { type: DT_FLOAT } } attr { key: "Tidx" value { type: DT_INT32 } } attr { key: "keep_dims" value { b: false } } } node { name: "gradients/sub_grad/Reshape" op: "Reshape" input: "gradients/sub_grad/Sum" input: "gradients/sub_grad/Shape" attr { key: "T" value { type: DT_FLOAT } } attr { key: "Tshape" value { type: DT_INT32 } } } node { name: "gradients/sub_grad/Sum_1" op: "Sum" input: "gradients/Square_grad/mul_1" input: "gradients/sub_grad/BroadcastGradientArgs:1" attr { key: "T" value { type: DT_FLOAT } } attr { key: "Tidx" value { type: DT_INT32 } } attr { key: "keep_dims" value { b: false } } } node { name: "gradients/sub_grad/Neg" op: "Neg" input: "gradients/sub_grad/Sum_1" attr { key: "T" value { type: DT_FLOAT } } } node { name: "gradients/sub_grad/Reshape_1" op: "Reshape" input: "gradients/sub_grad/Neg" input: "gradients/sub_grad/Shape_1" attr { key: "T" value { type: DT_FLOAT } } attr { key: "Tshape" value { type: DT_INT32 } } } node { name: "gradients/sub_grad/tuple/group_deps" op: "NoOp" input: "^gradients/sub_grad/Reshape" input: "^gradients/sub_grad/Reshape_1" } node { name: "gradients/sub_grad/tuple/control_dependency" op: "Identity" input: "gradients/sub_grad/Reshape" input: "^gradients/sub_grad/tuple/group_deps" attr { key: "T" value { type: DT_FLOAT } } attr { key: "_class" value { list { s: "loc:@gradients/sub_grad/Reshape" } } } } node { name: "gradients/sub_grad/tuple/control_dependency_1" op: "Identity" input: "gradients/sub_grad/Reshape_1" input: "^gradients/sub_grad/tuple/group_deps" attr { key: "T" value { type: DT_FLOAT } } attr { key: "_class" value { list { s: "loc:@gradients/sub_grad/Reshape_1" } } } } node { name: "gradients/add_grad/Shape" op: "Const" attr { key: "dtype" value { type: DT_INT32 } } attr { key: "value" value { tensor { dtype: DT_INT32 tensor_shape { dim { size: 1 } } int_val: 4 } } } } node { name: "gradients/add_grad/Shape_1" op: "Const" attr { key: "dtype" value { type: DT_INT32 } } attr { key: "value" value { tensor { dtype: DT_INT32 tensor_shape { dim { size: 1 } } int_val: 1 } } } } node { name: "gradients/add_grad/BroadcastGradientArgs" op: "BroadcastGradientArgs" input: "gradients/add_grad/Shape" input: "gradients/add_grad/Shape_1" attr { key: "T" value { type: DT_INT32 } } } node { name: "gradients/add_grad/Sum" op: "Sum" input: "gradients/sub_grad/tuple/control_dependency" input: "gradients/add_grad/BroadcastGradientArgs" attr { key: "T" value { type: DT_FLOAT } } attr { key: "Tidx" value { type: DT_INT32 } } attr { key: "keep_dims" value { b: false } } } node { name: "gradients/add_grad/Reshape" op: "Reshape" input: "gradients/add_grad/Sum" input: "gradients/add_grad/Shape" attr { key: "T" value { type: DT_FLOAT } } attr { key: "Tshape" value { type: DT_INT32 } } } node { name: "gradients/add_grad/Sum_1" op: "Sum" input: "gradients/sub_grad/tuple/control_dependency" input: "gradients/add_grad/BroadcastGradientArgs:1" attr { key: "T" value { type: DT_FLOAT } } attr { key: "Tidx" value { type: DT_INT32 } } attr { key: "keep_dims" value { b: false } } } node { name: "gradients/add_grad/Reshape_1" op: "Reshape" input: "gradients/add_grad/Sum_1" input: "gradients/add_grad/Shape_1" attr { key: "T" value { type: DT_FLOAT } } attr { key: "Tshape" value { type: DT_INT32 } } } node { name: "gradients/add_grad/tuple/group_deps" op: "NoOp" input: "^gradients/add_grad/Reshape" input: "^gradients/add_grad/Reshape_1" } node { name: "gradients/add_grad/tuple/control_dependency" op: "Identity" input: "gradients/add_grad/Reshape" input: "^gradients/add_grad/tuple/group_deps" attr { key: "T" value { type: DT_FLOAT } } attr { key: "_class" value { list { s: "loc:@gradients/add_grad/Reshape" } } } } node { name: "gradients/add_grad/tuple/control_dependency_1" op: "Identity" input: "gradients/add_grad/Reshape_1" input: "^gradients/add_grad/tuple/group_deps" attr { key: "T" value { type: DT_FLOAT } } attr { key: "_class" value { list { s: "loc:@gradients/add_grad/Reshape_1" } } } } node { name: "gradients/mul_grad/Shape" op: "Const" attr { key: "dtype" value { type: DT_INT32 } } attr { key: "value" value { tensor { dtype: DT_INT32 tensor_shape { dim { size: 1 } } int_val: 1 } } } } node { name: "gradients/mul_grad/Shape_1" op: "Const" attr { key: "dtype" value { type: DT_INT32 } } attr { key: "value" value { tensor { dtype: DT_INT32 tensor_shape { dim { size: 1 } } int_val: 4 } } } } node { name: "gradients/mul_grad/BroadcastGradientArgs" op: "BroadcastGradientArgs" input: "gradients/mul_grad/Shape" input: "gradients/mul_grad/Shape_1" attr { key: "T" value { type: DT_INT32 } } } node { name: "gradients/mul_grad/mul" op: "Mul" input: "gradients/add_grad/tuple/control_dependency" input: "mul/y" attr { key: "T" value { type: DT_FLOAT } } } node { name: "gradients/mul_grad/Sum" op: "Sum" input: "gradients/mul_grad/mul" input: "gradients/mul_grad/BroadcastGradientArgs" attr { key: "T" value { type: DT_FLOAT } } attr { key: "Tidx" value { type: DT_INT32 } } attr { key: "keep_dims" value { b: false } } } node { name: "gradients/mul_grad/Reshape" op: "Reshape" input: "gradients/mul_grad/Sum" input: "gradients/mul_grad/Shape" attr { key: "T" value { type: DT_FLOAT } } attr { key: "Tshape" value { type: DT_INT32 } } } node { name: "gradients/mul_grad/mul_1" op: "Mul" input: "W/read" input: "gradients/add_grad/tuple/control_dependency" attr { key: "T" value { type: DT_FLOAT } } } node { name: "gradients/mul_grad/Sum_1" op: "Sum" input: "gradients/mul_grad/mul_1" input: "gradients/mul_grad/BroadcastGradientArgs:1" attr { key: "T" value { type: DT_FLOAT } } attr { key: "Tidx" value { type: DT_INT32 } } attr { key: "keep_dims" value { b: false } } } node { name: "gradients/mul_grad/Reshape_1" op: "Reshape" input: "gradients/mul_grad/Sum_1" input: "gradients/mul_grad/Shape_1" attr { key: "T" value { type: DT_FLOAT } } attr { key: "Tshape" value { type: DT_INT32 } } } node { name: "gradients/mul_grad/tuple/group_deps" op: "NoOp" input: "^gradients/mul_grad/Reshape" input: "^gradients/mul_grad/Reshape_1" } node { name: "gradients/mul_grad/tuple/control_dependency" op: "Identity" input: "gradients/mul_grad/Reshape" input: "^gradients/mul_grad/tuple/group_deps" attr { key: "T" value { type: DT_FLOAT } } attr { key: "_class" value { list { s: "loc:@gradients/mul_grad/Reshape" } } } } node { name: "gradients/mul_grad/tuple/control_dependency_1" op: "Identity" input: "gradients/mul_grad/Reshape_1" input: "^gradients/mul_grad/tuple/group_deps" attr { key: "T" value { type: DT_FLOAT } } attr { key: "_class" value { list { s: "loc:@gradients/mul_grad/Reshape_1" } } } } node { name: "train/learning_rate" op: "Const" attr { key: "dtype" value { type: DT_FLOAT } } attr { key: "value" value { tensor { dtype: DT_FLOAT tensor_shape { } float_val: 0.5 } } } } node { name: "train/update_W/ApplyGradientDescent" op: "ApplyGradientDescent" input: "W" input: "train/learning_rate" input: "gradients/mul_grad/tuple/control_dependency" attr { key: "T" value { type: DT_FLOAT } } attr { key: "_class" value { list { s: "loc:@W" } } } attr { key: "use_locking" value { b: false } } } node { name: "train/update_b/ApplyGradientDescent" op: "ApplyGradientDescent" input: "b" input: "train/learning_rate" input: "gradients/add_grad/tuple/control_dependency_1" attr { key: "T" value { type: DT_FLOAT } } attr { key: "_class" value { list { s: "loc:@b" } } } attr { key: "use_locking" value { b: false } } } node { name: "train" op: "NoOp" input: "^train/update_W/ApplyGradientDescent" input: "^train/update_b/ApplyGradientDescent" } versions { producer: 15 } W = [ 0.28590274] b = [ 0.] loss = 0.0942384 W = [ 0.25326997] b = [ 0.28833532] loss = 0.00825562 W = [ 0.21323858] b = [ 0.28998014] loss = 0.00539162 W = [ 0.18187651] b = [ 0.29199788] loss = 0.00362905 W = [ 0.15726952] b = [ 0.29357865] loss = 0.00254401 W = [ 0.13796279] b = [ 0.29481894] loss = 0.00187605 W = [ 0.12281464] b = [ 0.29579207] loss = 0.00146485 W = [ 0.11092934] b = [ 0.29655561] loss = 0.00121172 W = [ 0.10160407] b = [ 0.29715466] loss = 0.00105589 W = [ 0.09428743] b = [ 0.29762471] loss = 0.00095996 W = [ 0.08854677] b = [ 0.29799351] loss = 0.000900905 W = [ 0.08404262] b = [ 0.29828286] loss = 0.000864551 W = [ 0.08050863] b = [ 0.29850987] loss = 0.000842171 W = [ 0.07773586] b = [ 0.29868799] loss = 0.000828394 W = [ 0.07556033] b = [ 0.29882777] loss = 0.000819912 W = [ 0.0738534] b = [ 0.29893741] loss = 0.000814691 W = [ 0.07251414] b = [ 0.29902345] loss = 0.000811478 W = [ 0.07146335] b = [ 0.29909095] loss = 0.000809499 W = [ 0.07063889] b = [ 0.29914391] loss = 0.000808281 W = [ 0.06999201] b = [ 0.29918545] loss = 0.000807531 W = [ 0.06948448] b = [ 0.29921809] loss = 0.000807069