我一直在使用laravel来构建我的API.我使用变换器来转换模型对象的数据.
现在我没有数据库,而是来自API的响应作为数据源,我想将这些数据转换回用户,但我无法这样做.
我的控制器
public function rocByName(Request $request)
{
try {
$this->roc_by_name_validator->with( $request->all() )->passesOrFail();
$company_name = $request->input('company_name');
$result = $this->my_service->getDetailsByName($company_name); //$result has the response object from the API which I want to transform and give it as a response.
return $this->response->collection($result,new OnboardingTransformer()); //Tried using tranformer like this
}
catch (ValidatorException $e) {
dd($e);
}
}
Run Code Online (Sandbox Code Playgroud)
我的变形金刚
<?php
namespace Modules\Onboarding\Transformers;
use League\Fractal\TransformerAbstract;
use App\Entities\OnboardingEntity; //I dont have an entity since the response is coming from an API!! What will give here?
/** …Run Code Online (Sandbox Code Playgroud) php transformer-model laravel dingo-api thephpleague-fractal
这是我的第一个机器学习项目,也是我第一次使用 ColumnTransformer。我的目标是执行数据预处理的两个步骤,并为每个步骤使用 ColumnTransformer。
在第一步中,我想用字符串 'missing_value' 替换我的数据框中的缺失值,用于某些功能,并为其余功能替换最常见的值。因此,我使用 ColumnTransformer 将这两个操作结合起来,并将数据帧的相应列传递给它。
在第二步中,我想使用刚刚预处理的数据并根据功能应用 OrdinalEncoder 或 OneHotEncoder。为此,我再次使用 ColumnTransformer。
然后我将这两个步骤合并到一个管道中。
我正在使用 Kaggle Houses Price 数据集,我有 scikit-learn 0.20 版,这是我的代码的简化版本:
cat_columns_fill_miss = ['PoolQC', 'Alley']
cat_columns_fill_freq = ['Street', 'MSZoning', 'LandContour']
cat_columns_ord = ['Street', 'Alley', 'PoolQC']
ord_mapping = [['Pave', 'Grvl'], # Street
['missing_value', 'Pave', 'Grvl'], # Alley
['missing_value', 'Fa', 'TA', 'Gd', 'Ex'] # PoolQC
]
cat_columns_onehot = ['MSZoning', 'LandContour']
imputer_cat_pipeline = ColumnTransformer([
('imp_miss', SimpleImputer(strategy='constant'), cat_columns_fill_miss), # fill_value='missing_value' by default
('imp_freq', SimpleImputer(strategy='most_frequent'), cat_columns_fill_freq),
])
encoder_cat_pipeline = ColumnTransformer([
('ordinal', OrdinalEncoder(categories=ord_mapping), cat_columns_ord),
('pass_ord', …Run Code Online (Sandbox Code Playgroud) 我对这两种结构感到困惑。理论上,它们的输出都与其输入相关。是什么魔力让“自注意力机制”比全连接层更强大?
所以我基本上将这个变换器实现用于我的项目:https://github.com/Kyubyong/transformer.它最初编写的德语到英语翻译效果很好,我修改了处理python脚本,以便为我想要翻译的语言创建词汇表文件.这似乎工作正常.
但是,当涉及到培训时,我收到以下错误:
InvalidArgumentError(请参阅上面的回溯):从检查点恢复失败.这很可能是由于当前图表与检查点图表不匹配造成的.请确保您没有根据检查点更改预期的图表.原始错误:
分配要求两个张量的形状匹配.lhs shape = [9796,512] rhs shape = [9786,512] [[{{node save/Assign_412}} =分配[T = DT_FLOAT,_class = ["loc:@ encoder/enc_embed/lookup_table"],use_locking = true,validate_shape = true,_device ="/ job:localhost/replica:0/task:0/device:CPU:0"](encoder/enc_embed/lookup_table/Adam_1,save/RestoreV2:412)]]
现在我不知道为什么我收到上述错误.我还恢复了原始代码,从德语翻译成英语,现在我得到了相同的错误(除了lhs和rhs张量形状当然不同),在它工作之前!
关于为什么会发生这种情况的任何想法?
提前致谢
编辑:这是有问题的特定文件在这里,train.py当它运行:https://github.com/Kyubyong/transformer/blob/master/train.py 什么也没有比一个事实,即词汇修饰等为de和en加载的是不同的(它们实际上是单个字母作为单词的词汇文件).然而,正如我所提到的那样,即使回到流行的工作示例,我也会得到与不同的lhs和rhs尺寸相同的错误.
我正在努力掩盖 MultiHeadAttention 层的输入。我正在使用 Keras 文档中的 Transformer Block 进行自我关注。到目前为止,我在网上找不到任何示例代码,如果有人能给我一个代码片段,我将不胜感激。
本页的变压器块:
class TransformerBlock(layers.Layer):
def __init__(self, embed_dim, num_heads, ff_dim, rate=0.1):
super(TransformerBlock, self).__init__()
self.att = layers.MultiHeadAttention(num_heads=num_heads, key_dim=embed_dim)
self.ffn = keras.Sequential(
[layers.Dense(ff_dim, activation="relu"), layers.Dense(embed_dim),]
)
self.layernorm1 = layers.LayerNormalization(epsilon=1e-6)
self.layernorm2 = layers.LayerNormalization(epsilon=1e-6)
self.dropout1 = layers.Dropout(rate)
self.dropout2 = layers.Dropout(rate)
def call(self, inputs, training):
attn_output = self.att(inputs, inputs)
attn_output = self.dropout1(attn_output, training=training)
out1 = self.layernorm1(inputs + attn_output)
ffn_output = self.ffn(out1)
ffn_output = self.dropout2(ffn_output, training=training)
return self.layernorm2(out1 + ffn_output)
Run Code Online (Sandbox Code Playgroud)
屏蔽的文档可以在此链接下找到:
focus_mask:形状为 [B, T, S] 的布尔掩码,可防止对某些位置的关注。布尔掩码指定哪些查询元素可以关注哪些关键元素,1表示关注,0表示不关注。对于缺少的批次尺寸和头部尺寸,可能会发生广播。
我唯一可以运行的是在图层类外部创建的掩码作为 …
machine-learning transformer-model keras tensorflow attention-model
我正在使用javax.xml.transform.Transformer类将DOM源转换为XML字符串.我在DOM树中有一些空元素,这些元素成为我不想要的一个标记.
我该如何防止<sampletag></sampletag>成为<sampletag/>?
尝试构建一个自定义StreamTransformer类,但是很多示例似乎已经过时了,文档中找到的那些不是(某些类型语言可能会考虑的)作为一个类(在这里找到:https ://api.dartlang.org/apidocs/channels/stable/dartdoc-viewer/dart:async.StreamTransformer).这似乎不是一种非常像Dart的方式来接近它,而是更像是一种类似Javascript的方式(我正在使用Dart来避免).
许多在线消息来源说这是你创建StreamTransformer的方式,但扩展它时会出现错误.
class exampleStreamTransformer extends StreamTransformer
{
//... (This won't work)
}
Run Code Online (Sandbox Code Playgroud)
"实现"似乎是要走的路,同时实现所需的绑定功能:
class exampleStreamTransformer implements StreamTransformer
{
Stream bind(Stream stream)
{
//... (Go on to return new stream, etc)
}
}
Run Code Online (Sandbox Code Playgroud)
我似乎无法找到这种方式的任何示例,但我自己抛出了一些东西(在我的IDE中已被接受,但在运行时不被接受,当它尝试使用pause getter时我得到一个空对象错误):
class exampleStreamTransformer implements StreamTransformer
{
StreamController<String> _controller;
StreamSubscription<String> _subscription;
Stream bind(Stream stream)
{
_controller = new StreamController<String>(
onListen: ()
{
_subscription = stream.listen((data)
{
// Transform the data.
_controller.add(data);
},
onError: _controller.addError,
onDone: _controller.close,
cancelOnError: true); // Unsure how I'd pass this in????? …Run Code Online (Sandbox Code Playgroud) 在 Tensorflow 教程的这一部分中,他们提到他们正在使用教师强制进行训练。据我所知,教师强制涉及将目标输出输入到模型中,以便模型更快地收敛。所以我很好奇这里是如何完成的?真正的目标是tar_real,据我所知,它仅用于计算损失和准确性。我很好奇这段代码是如何实现教师强制的?
提前致谢。
我想使用 BertForMaskedLM 或 BertModel 来计算句子的困惑度,所以我编写了这样的代码:
\nimport numpy as np\nimport torch\nimport torch.nn as nn\nfrom transformers import BertTokenizer, BertForMaskedLM\n# Load pre-trained model (weights)\nwith torch.no_grad():\n model = BertForMaskedLM.from_pretrained(\'hfl/chinese-bert-wwm-ext\')\n model.eval()\n # Load pre-trained model tokenizer (vocabulary)\n tokenizer = BertTokenizer.from_pretrained(\'hfl/chinese-bert-wwm-ext\')\n sentence = "\xe6\x88\x91\xe4\xb8\x8d\xe4\xbc\x9a\xe5\xbf\x98\xe8\xae\xb0\xe5\x92\x8c\xe4\xbd\xa0\xe4\xb8\x80\xe8\xb5\xb7\xe5\xa5\x8b\xe6\x96\x97\xe7\x9a\x84\xe6\x97\xb6\xe5\x85\x89\xe3\x80\x82"\n tokenize_input = tokenizer.tokenize(sentence)\n tensor_input = torch.tensor([tokenizer.convert_tokens_to_ids(tokenize_input)])\n sen_len = len(tokenize_input)\n sentence_loss = 0.\n\n for i, word in enumerate(tokenize_input):\n # add mask to i-th character of the sentence\n tokenize_input[i] = \'[MASK]\'\n mask_input = torch.tensor([tokenizer.convert_tokens_to_ids(tokenize_input)])\n\n output = model(mask_input)\n\n prediction_scores = output[0]\n softmax = nn.Softmax(dim=0)\n …Run Code Online (Sandbox Code Playgroud) nlp transformer-model pytorch bert-language-model huggingface-transformers
我正在尝试拥抱脸 gpt2 模型。我看过run_generation.py脚本,它会根据提示生成一系列令牌。我知道我们可以将 GPT2 用于 NLG。
在我的用例中,我希望(仅)确定给定提示后紧接的下一个单词的概率分布。理想情况下,这种分布将覆盖整个词汇。
例如,给定提示:“How are”,它应该给出一个概率分布,其中“you”或“they”具有一些高浮点值而其他词汇具有非常低的浮点值。
如何使用拥抱面部变压器做到这一点?如果不能拥抱脸,是否还有其他变压器模型可以做到这一点?