参照pytorch设计的Etorch深度学习模块

易语言 2020-03-07 18:50:26

参照pytorch设计的Etorch深度学习模块

.循环判断首 ()
y_pred = 非线性_model1.forward (非线性_modelid, 非线性_X_data)
loss = 非线性_criterion.forward (非线性_criterionid, y_pred, 非线性_Y_data)
加入成员 (lossvalue, 全局_tensor操作.getValue_1d (loss, 1))
全局_tensor操作.backward (loss)
非线性_optimizer.step ()
.如果真 (epoch > 1000000)
跳出循环 ()
.如果真结束
.如果真 (epoch % 2000 = 0)
全局_tensor操作.print_value (loss, “loss”)
画板3.清除 (, , , )
.计次循环首 (3, i)
画板3.画椭圆 (非线性_in [i] × 20 - 3, 画板3.高度 - 非线性_out [i] × 20 - 3, 非线性_in [i] × 20 + 3, 画板3.高度 - 非线性_out [i] × 20 + 3)
.计次循环尾 ()
.计次循环首 (1000, i)
加入成员 (输入数据, i ÷ 50)
.计次循环尾 ()
重定义数组 (输入数据, 真, 1000, 1)
非线性_测试 = Tensor_fn (输入数据, 真)
预测数据id = 非线性_model1.forward (非线性_modelid, 非线性_测试)
全局_tensor操作.getValue (预测数据id, 结果数组)
.计次循环首 (1000, i)
画板3.画点 (输入数据 [i] × 20, 画板3.高度 - 结果数组 [i] × 20, #红色)
.计次循环尾 ()
.如果真结束
非线性_optimizer.zero_grad ()
epoch = epoch + 1
.循环判断尾 (全局_tensor操作.getValue_1d (loss, 1) > 0.001)
输出调试文本 (“训练次数:” + 到文本 (epoch))
输出调试文本 (“训练和预测共耗时毫秒:” + 到文本 (取启动时间 () - t))
n = lossvalue [1] - lossvalue [epoch]
n = n ÷ 画板5.高度
.计次循环首 (epoch, i)
j = lossvalue [i]
画板5.画椭圆 (i + 30 - 1, 画板5.高度 - 20 - j ÷ n - 1, i + 30 + 1, 画板5.高度 - 20 - j ÷ n + 1)
.计次循环尾 ()