先借这里更正上上篇 《模型训练好后 预测 numpy图片》代码里的一个错误。 模型(net)训练好后做预测时,须加上 net.eval()这行 代码,否则会发生预测准确率随 batchsize 变化的神奇现象。
net.eval() # 须增加这行代码,固定住batch normalization 和 drop out
with torch.no_grad():
outputs = net(images)
_, predictions = torch.max(outputs, 1)
解题思路是回溯加剪枝,见Leetcode 用户liweiwei1419 的解答
https://leetcode.cn/problems/combination-sum/solutions/14697/hui-su-suan-fa-jian-zhi-python-dai-ma-java-dai-m-2/
代码我已略作精简。
class Solution:
def combinationSum(self, candidates: List[int], target: int) -> List[List[int]]:
# candidates.sort()
def dfs(candidates, begin, path, target):
if target==1 or target < 0: # 根据条件 2 <= candidates[i] <= 40,target==1 时也无解
return
if target == 0: # 满足条件, 各candi 之和 为最初的target
res.append(path)
return
for index in range(begin, size):
candi = candidates[index]
dfs(candidates, index, path + [candi],target - candi) # 递归 和 剪枝(begin 不从0开始)
size = len(candidates)
if size == 0:
return []
path = []
res = []
dfs(candidates, 0, path,target)
return res
本文分享自 Python可视化编程机器学习OpenCV 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!