这两天的时间没有刷leetcode上的题,我发现树对于我来说还是有一定难度,需要像大学考二级一样不断的刷题,不断的做,让树栈什么的成为自己潜意识的内容,不断的复习。还需要学习python里面的一些知识。包括基本语法numpy,sklearn,panda,这些东西。还有三个月就要回国了,就要找工作了,时间很紧迫了。现在已经实现hmm、cnn、lstm、bilstm对语音情感进行识别,有时间把英文论文写写。在训练的时候发现训练集和测试集的准确率差别比较大,应该是出现了过拟合,采用交叉验证可以解决这个问题和数据集的不均衡也相关,也可以通过优化神经网络结构来解决。一定要发表一篇英文的论文。cnn训练集和测试集的准确率都在50%左右,lstm训练集的准确率在70%以上,但测试集的准确率很低,只有40%左右。这种结果和随机猜测差不多。总结差不多到这里。再贴上树的题。
接下来要学习的:
(1)刷leetcode上的题目
(2)学习python基础知识
(3)写英文论文
(4)复习传统机器学习的理论知识和推导和深度学习理论的知识和框架。
待看文章:attention机制实现文本识别,keras框架自定义attention机制,keras框架中没有attention机制。
https://blog.csdn.net/yanhe156/article/details/85476608
使数据集更均衡的办法,留出法和交叉验证
https://www.cnblogs.com/jiaxin359/p/8552800.html
keras实现交叉验证
https://blog.csdn.net/webmater2320/article/details/100996865
递归比较难理解,一开始可以先用迭代去实现。因为二叉搜索树的右子树是最大的,所以先遍历整棵树的右子树保存起来,遍历到最后,进行求和,然后再去遍历左子树。代码如下:
class Solution {
private: int sum=0;
public:
TreeNode* convertBST(TreeNode* root) {
stack<TreeNode*>s;
TreeNode* temp=root;
while(temp || !s.empty())
{
while(temp)
{
s.push(temp);
temp=temp->right;
}
temp=s.top();s.pop();
sum+=temp->val;
temp->val=sum;
temp=temp->left;
}
return root;
}
};
递归实现:感觉递归等价于迭代,思想是一样的
class Solution {
private: int sum=0;
public:
TreeNode* convertBST(TreeNode* root) {
if(root!=NULL)
{
convertBST(root->right);
sum+=root->val;
root->val=sum;
convertBST(root->left);
}
return root;
}
};