Python wrapper for damo, a set of fast and robust hash functions.
Project description
Damo-Embedding
Quick Install
pip install damo-embedding
Example
DeepFM
import torch
import torch.nn as nn
from damo_embedding import Embedding
class DeepFM(torch.nn.Module):
def __init__(
self,
emb_size: int,
fea_size: int,
hid_dims=[256, 128],
num_classes=1,
dropout=[0.2, 0.2],
**kwargs,
):
super(DeepFM, self).__init__()
self.emb_size = emb_size
self.fea_size = fea_size
initializer = {
"name": "truncate_normal",
"mean": float(kwargs.get("mean", 0.0)),
"stddev": float(kwargs.get("stddev", 0.0001)),
}
optimizer = {
"name": "adam",
"gamma": float(kwargs.get("gamma", 0.001)),
"beta1": float(kwargs.get("beta1", 0.9)),
"beta2": float(kwargs.get("beta2", 0.999)),
"lambda": float(kwargs.get("lambda", 0.0)),
"epsilon": float(kwargs.get("epsilon", 1e-8)),
}
self.w = Embedding(
1,
initializer=initializer,
optimizer=optimizer,
)
self.v = Embedding(
self.emb_size,
initializer=initializer,
optimizer=optimizer,
)
self.w0 = torch.zeros(1, dtype=torch.float32, requires_grad=True)
self.dims = [fea_size * emb_size] + hid_dims
self.layers = nn.ModuleList()
for i in range(1, len(self.dims)):
self.layers.append(nn.Linear(self.dims[i - 1], self.dims[i]))
self.layers.append(nn.BatchNorm1d(self.dims[i]))
self.layers.append(nn.BatchNorm1d(self.dims[i]))
self.layers.append(nn.ReLU())
self.layers.append(nn.Dropout(dropout[i - 1]))
self.layers.append(nn.Linear(self.dims[-1], num_classes))
self.sigmoid = nn.Sigmoid()
def forward(self, input: torch.Tensor) -> torch.Tensor:
"""forward
Args:
input (torch.Tensor): input tensor
Returns:
tensor.Tensor: deepfm forward values
"""
assert input.shape[1] == self.fea_size
w = self.w.forward(input)
v = self.v.forward(input)
square_of_sum = torch.pow(torch.sum(v, dim=1), 2)
sum_of_square = torch.sum(v * v, dim=1)
fm_out = (
torch.sum((square_of_sum - sum_of_square)
* 0.5, dim=1, keepdim=True)
+ torch.sum(w, dim=1)
+ self.w0
)
dnn_out = torch.flatten(v, 1)
for layer in self.layers:
dnn_out = layer(dnn_out)
out = fm_out + dnn_out
out = self.sigmoid(out)
return out
Save Model
from damo_embedding import save_model
model = DeepFM(8, 39)
save_model(model, "./", training=False)
Document
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
damo-embedding-1.1.5.tar.gz
(222.5 kB
view hashes)
Built Distributions
Close
Hashes for damo_embedding-1.1.5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1e30dca81dbf13076f31e90166f2b40c4eefda08012c7c7cf57e215c6c3df609 |
|
MD5 | b3b0a3913fe25a8812ee365060aa04e0 |
|
BLAKE2b-256 | 2f03fb829f44b932a937222b785df02d11c66e88b4290591df525c65b7dc1991 |
Close
Hashes for damo_embedding-1.1.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fea495f3edd7ef91ea7101a1ce0fc53dff4c972b94fd1d329ce194fc5d286475 |
|
MD5 | d9c00ea35c0a59faaee946eb1e87770b |
|
BLAKE2b-256 | d232efcef5657f6fbdcb2523159d1683538c30ee77381e49563c4d9d96007254 |
Close
Hashes for damo_embedding-1.1.5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 28b47ba1c68f455c20c1520540650189bc09f2c188f4342eecfff02fa9408abc |
|
MD5 | e9df4723c7a9251a6e260b9b7b7410a0 |
|
BLAKE2b-256 | c2a9492cc25196cf0ad8e916a3f1d8e6a59de67bb926b65551d6bc7ff88abb93 |
Close
Hashes for damo_embedding-1.1.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a09392abcb8e8cc308d9f73c7b0383d7d678f7fd45afe32b41aa47668ec12af9 |
|
MD5 | 2ea2219b385a786a1d13e66aab20c4c8 |
|
BLAKE2b-256 | 9a07da6346f63202a9c300d0c4c06952a5e288915e2048d03553705c9d08cf37 |
Close
Hashes for damo_embedding-1.1.5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3f938a4ed95eb8683c9b35d6f75be3ee22a0c7e041e9f221946288a08e8784c9 |
|
MD5 | e69c41c63c18c27f8bf68dc0680cf7f5 |
|
BLAKE2b-256 | 584ebebb69c4c819e0981e38ad63a903b730b015129def6c50daee9fde3bcb52 |
Close
Hashes for damo_embedding-1.1.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 36f7f11b24c19413c36b26df448bb876e222fa93c4cd9e2f819aade4097b2e1f |
|
MD5 | 45d99458485920f7626c68d9d3c27448 |
|
BLAKE2b-256 | 4fbeeb45df8f08ee542e55b5061a5e9d699153ecc3cb8dec3b5fd31cbc41adae |
Close
Hashes for damo_embedding-1.1.5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 44ce74fa2d8a263c0104f8f63147af0bfe01c688cca77e08af386f5704cd77d5 |
|
MD5 | 0d807135a5822fb06d465715de3c8a61 |
|
BLAKE2b-256 | 89bdc60ba626c1dbbc2825cbca90640ffbfb68e1715b97f29d798c58376ce8ef |
Close
Hashes for damo_embedding-1.1.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a452a331f456e9cec5e72f1df8ede3d979f96827a0075329385228c2d5e059c3 |
|
MD5 | 0cba34566dc207e0e4d7d88ac7e50baa |
|
BLAKE2b-256 | 7e29789fdb05dd59910e0aa832cd65047de6c8ffc5f6f1d90eaed5c675c6ee69 |
Close
Hashes for damo_embedding-1.1.5-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 67d1108e207c22b32b925db41e7dd95c7bdfc93f999a8fd6171f2de3a202de26 |
|
MD5 | a51927535edb3b0f514e33f9476a991e |
|
BLAKE2b-256 | dd8ab94895d9552a149cf8658884d460d260b98f9c9682fc39dee29bfaf9d7ae |
Close
Hashes for damo_embedding-1.1.5-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8b2dcf6158d67c58f097608419179232545a8a576fa67e438d8cc95f17cc4cdc |
|
MD5 | 8bae8a4f2b1401d9d23b97370cd2a87b |
|
BLAKE2b-256 | 5d6f9efc1dd45e13ae06bd87b3c5016a16657ef4450a1dcdc305dc3e7c1ea782 |