| @@ -594,8 +594,6 @@ | |||||
| "range_percentage_lt": "Percentage of the value in the range <", | "range_percentage_lt": "Percentage of the value in the range <", | ||||
| "range_percentage_gt": "Percentage of the value in the range >", | "range_percentage_gt": "Percentage of the value in the range >", | ||||
| "rtol": "Relative tolerance", | "rtol": "Relative tolerance", | ||||
| "abs_update_ratio_mean_gt": "Average of the absolute value of the change ratio >", | |||||
| "abs_update_ratio_mean_lt": "Average of the absolute value of the change ratio <", | |||||
| "abs_mean_update_ratio_gt": "Ratio of mean update >", | "abs_mean_update_ratio_gt": "Ratio of mean update >", | ||||
| "abs_mean_update_ratio_lt": "Ratio of mean update <", | "abs_mean_update_ratio_lt": "Ratio of mean update <", | ||||
| "param": "Threshold", | "param": "Threshold", | ||||
| @@ -593,8 +593,6 @@ | |||||
| "range_percentage_lt": "在范围中的值所占百分比<", | "range_percentage_lt": "在范围中的值所占百分比<", | ||||
| "range_percentage_gt": "在范围中的值所占百分比>", | "range_percentage_gt": "在范围中的值所占百分比>", | ||||
| "rtol": "相对容忍度", | "rtol": "相对容忍度", | ||||
| "abs_update_ratio_mean_gt": "变化比例绝对值的平均值>", | |||||
| "abs_update_ratio_mean_lt": "变化比例绝对值的平均值<", | |||||
| "abs_mean_update_ratio_gt": "平均变化比例值>", | "abs_mean_update_ratio_gt": "平均变化比例值>", | ||||
| "abs_mean_update_ratio_lt": "平均变化比例值<", | "abs_mean_update_ratio_lt": "平均变化比例值<", | ||||
| "param": "阈值", | "param": "阈值", | ||||
| @@ -741,7 +739,20 @@ | |||||
| "no_prev_tensor": "找不到上一个迭代的值,", | "no_prev_tensor": "找不到上一个迭代的值,", | ||||
| "cannotCheck": "无法检查。" | "cannotCheck": "无法检查。" | ||||
| }, | }, | ||||
| "sendingTip": "等待训练响应,请稍候。" | |||||
| "stateTips": { | |||||
| "running": "运行中", | |||||
| "sending": "等待执行" | |||||
| }, | |||||
| "stateMsg": { | |||||
| "running": "训练运行中", | |||||
| "sending": "等待命令执行,请稍候" | |||||
| }, | |||||
| "paramErrorMsg": { | |||||
| "errorType": "请输入数值", | |||||
| "percentError": "百分数值不能小于0或大于100", | |||||
| "rangeError": "范围下界值不能大于上界值", | |||||
| "nonnegative": "此参数值不能小于0" | |||||
| } | |||||
| }, | }, | ||||
| "explain": { | "explain": { | ||||
| "explain": "模型解释", | "explain": "模型解释", | ||||
| @@ -577,6 +577,7 @@ export default { | |||||
| * Add watchpoint | * Add watchpoint | ||||
| */ | */ | ||||
| addWatchPoint() { | addWatchPoint() { | ||||
| this.paramErrorMsg = this.$t('debugger.paramErrorMsg.errorType'); | |||||
| this.createWatchPointArr = []; | this.createWatchPointArr = []; | ||||
| this.createWatchPointArr.push({ | this.createWatchPointArr.push({ | ||||
| collection: { | collection: { | ||||
| @@ -645,12 +646,56 @@ export default { | |||||
| } | } | ||||
| }, | }, | ||||
| validateParam(item) { | validateParam(item) { | ||||
| this.$forceUpdate(); | |||||
| const reg = /^(\-|\+)?\d+(\.\d+)?$/; | const reg = /^(\-|\+)?\d+(\.\d+)?$/; | ||||
| this.validPram = reg.test(item.param.value); | this.validPram = reg.test(item.param.value); | ||||
| item.compositeParams.selections.forEach((i) => { | item.compositeParams.selections.forEach((i) => { | ||||
| this.validPram = this.validPram && reg.test(i.value); | this.validPram = this.validPram && reg.test(i.value); | ||||
| }); | }); | ||||
| if (!this.validPram) { | |||||
| this.paramErrorMsg = this.$t('debugger.paramErrorMsg.errorType'); | |||||
| } else { | |||||
| this.paramErrorMsg = ''; | |||||
| item.param.value = parseFloat(item.param.value); | |||||
| const absParams = [ | |||||
| 'abs_mean_gt', | |||||
| 'abs_mean_lt', | |||||
| 'rtol', | |||||
| 'abs_mean_update_ratio_gt', | |||||
| 'abs_mean_update_ratio_lt', | |||||
| ]; | |||||
| if (absParams.includes(item.param.name) && item.param.value < 0) { | |||||
| this.validPram = false; | |||||
| this.paramErrorMsg = this.$t('debugger.paramErrorMsg.nonnegative'); | |||||
| } | |||||
| if (this.percentParams.includes(item.param.name)) { | |||||
| const percentRange = {min: 0, max: 100}; | |||||
| if (item.param.value < percentRange.min || item.param.value > percentRange.max) { | |||||
| this.validPram = false; | |||||
| this.paramErrorMsg = this.$t('debugger.paramErrorMsg.percentError'); | |||||
| } | |||||
| } | |||||
| if (this.validPram && item.compositeParams.selections.length) { | |||||
| const rangeKey = ['range_start_inclusive', 'range_end_inclusive']; | |||||
| const rangeStart = item.compositeParams.selections.filter((i) => { | |||||
| return i.name === rangeKey[0]; | |||||
| }); | |||||
| const rangeEnd = item.compositeParams.selections.filter((i) => { | |||||
| return i.name === rangeKey[1]; | |||||
| }); | |||||
| if (rangeStart.length && rangeEnd.length) { | |||||
| rangeStart[0].value = parseFloat(rangeStart[0].value); | |||||
| rangeEnd[0].value = parseFloat(rangeEnd[0].value); | |||||
| if (rangeStart[0].value > rangeEnd[0].value) { | |||||
| this.validPram = false; | |||||
| this.paramErrorMsg = this.$t('debugger.paramErrorMsg.rangeError'); | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| this.$forceUpdate(); | |||||
| }, | }, | ||||
| /** | /** | ||||
| * Create new watchpoint | * Create new watchpoint | ||||
| @@ -731,6 +776,7 @@ export default { | |||||
| item.param.type = ''; | item.param.type = ''; | ||||
| item.param.value = ''; | item.param.value = ''; | ||||
| this.validPram = false; | this.validPram = false; | ||||
| this.paramErrorMsg = this.$t('debugger.paramErrorMsg.errorType'); | |||||
| } | } | ||||
| }, | }, | ||||
| /** | /** | ||||
| @@ -787,6 +833,7 @@ export default { | |||||
| item.param.type = param.type; | item.param.type = param.type; | ||||
| item.param.value = ''; | item.param.value = ''; | ||||
| this.validPram = false; | this.validPram = false; | ||||
| this.paramErrorMsg = this.$t('debugger.paramErrorMsg.errorType'); | |||||
| if (item.param.type === 'BOOL') { | if (item.param.type === 'BOOL') { | ||||
| item.param.value = true; | item.param.value = true; | ||||
| this.validPram = true; | this.validPram = true; | ||||
| @@ -584,6 +584,11 @@ limitations under the License. | |||||
| </div> | </div> | ||||
| <span slot="footer" | <span slot="footer" | ||||
| class="dialog-footer"> | class="dialog-footer"> | ||||
| <div class="error-msg" | |||||
| v-show="!validPram"> | |||||
| <i class="el-icon-warning"></i> | |||||
| {{$t('public.notice') + $t('symbols.colon') + paramErrorMsg}} | |||||
| </div> | |||||
| <el-button type="primary" | <el-button type="primary" | ||||
| size="mini" | size="mini" | ||||
| class="custom-btn green" | class="custom-btn green" | ||||
| @@ -815,6 +820,7 @@ export default { | |||||
| sending: 'sending', | sending: 'sending', | ||||
| waiting: 'waiting', | waiting: 'waiting', | ||||
| }, | }, | ||||
| paramErrorMsg: '', | |||||
| }; | }; | ||||
| }, | }, | ||||
| components: {debuggerTensor, tree}, | components: {debuggerTensor, tree}, | ||||
| @@ -2246,32 +2252,43 @@ export default { | |||||
| .notShow { | .notShow { | ||||
| display: none; | display: none; | ||||
| } | } | ||||
| .conditions-container { | |||||
| .collection { | |||||
| width: 200px; | |||||
| } | |||||
| .condition, | |||||
| .param, | |||||
| .param-value { | |||||
| margin-left: 10px; | |||||
| width: 200px; | |||||
| } | |||||
| .percent-sign { | |||||
| display: inline-block; | |||||
| text-align: right; | |||||
| width: 20px; | |||||
| } | |||||
| .inclusive-param { | |||||
| text-align: right; | |||||
| .item { | |||||
| margin-top: 10px; | |||||
| display: inline-block; | |||||
| .creat-watch-point-dialog { | |||||
| .conditions-container { | |||||
| .collection { | |||||
| width: 200px; | |||||
| } | } | ||||
| .item + .item { | |||||
| .condition, | |||||
| .param, | |||||
| .param-value { | |||||
| margin-left: 10px; | margin-left: 10px; | ||||
| width: 200px; | |||||
| } | |||||
| .percent-sign { | |||||
| display: inline-block; | |||||
| text-align: right; | |||||
| width: 20px; | |||||
| } | |||||
| .inclusive-param { | |||||
| text-align: right; | |||||
| .item { | |||||
| margin-top: 10px; | |||||
| display: inline-block; | |||||
| } | |||||
| .item + .item { | |||||
| margin-left: 10px; | |||||
| } | |||||
| } | |||||
| } | |||||
| .error-msg { | |||||
| float: left; | |||||
| .el-icon-warning { | |||||
| color: #e6a23c; | |||||
| font-size: 16px; | |||||
| cursor: pointer; | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| .el-dialog__wrapper.pendingTips { | .el-dialog__wrapper.pendingTips { | ||||
| position: absolute; | position: absolute; | ||||
| .dialog-icon { | .dialog-icon { | ||||