Keras【极简】seq2seq

利用python制作词云图 词云图是一种为了文本数据的视觉表示,由词汇组成类似云的彩色图形,当需要统计文本中出现词汇的规模大小时,我们可以使用此类图形。本文将介绍如何用python代码制作词云图。 阅读详情

精简代码

本文参考官网栗子,汉化注释并精简成100行代码(直接复制可用)

"""
《长恨歌》——白居易
汉皇重色思倾国,御宇多年求不得。
杨家有女初长成,养在深闺人未识。
天生丽质难自弃,一朝选在君王侧。
回眸一笑百媚生,六宫粉黛无颜色。
春寒赐浴华清池,温泉水滑洗凝脂。
侍儿扶起娇无力,始是新承恩泽时。
云鬓花颜金步摇,芙蓉帐暖度春宵。
春宵苦短日高起,从此君王不早朝。
承欢侍宴无闲暇,春从春游夜专夜。
后宫佳丽三千人,三千宠爱在一身。
金屋妆成娇侍夜,玉楼宴罢醉和春。
姊妹弟兄皆列土,可怜光彩生门户。
遂令天下父母心,不重生男重生女。
骊宫高处入青云,仙乐风飘处处闻。
缓歌慢舞凝丝竹,尽日君王看不足。
渔阳鼙鼓动地来,惊破霓裳羽衣曲。
九重城阙烟尘生,千乘万骑西南行。
翠华摇摇行复止,西出都门百余里。
六军不发无奈何,宛转蛾眉马前死。
花钿委地无人收,翠翘金雀玉搔头。
君王掩面救不得,回看血泪相和流。
黄埃散漫风萧索,云栈萦纡登剑阁。
峨嵋山下少人行,旌旗无光日色薄。
蜀江水碧蜀山青,圣主朝朝暮暮情。
行宫见月伤心色,夜雨闻铃肠断声。
天旋地转回龙驭,到此踌躇不能去。
马嵬坡下泥土中,不见玉颜空死处。
君臣相顾尽沾衣,东望都门信马归。
归来池苑皆依旧,太液芙蓉未央柳。
芙蓉如面柳如眉,对此如何不泪垂。
春风桃李花开日,秋雨梧桐叶落时。
西宫南内多秋草,落叶满阶红不扫。
梨园弟子白发新,椒房阿监青娥老。
夕殿萤飞思悄然,孤灯挑尽未成眠。
迟迟钟鼓初长夜,耿耿星河欲曙天。
鸳鸯瓦冷霜华重,翡翠衾寒谁与共。
悠悠生死别经年,魂魄不曾来入梦。
临邛道士鸿都客,能以精诚致魂魄。
为感君王辗转思,遂教方士殷勤觅。
排空驭气奔如电,升天入地求之遍。
上穷碧落下黄泉,两处茫茫皆不见。
忽闻海上有仙山,山在虚无缥渺间。
楼阁玲珑五云起,其中绰约多仙子。
中有一人字太真,雪肤花貌参差是。
金阙西厢叩玉扃,转教小玉报双成。
闻道汉家天子使,九华帐里梦魂惊。
揽衣推枕起徘徊,珠箔银屏迤逦开。
云鬓半偏新睡觉,花冠不整下堂来。
风吹仙袂飘飖举,犹似霓裳羽衣舞。
玉容寂寞泪阑干,梨花一枝春带雨。
含情凝睇谢君王,一别音容两渺茫。
昭阳殿里恩爱绝,蓬莱宫中日月长。
回头下望人寰处,不见长安见尘雾。
惟将旧物表深情,钿合金钗寄将去。
钗留一股合一扇,钗擘黄金合分钿。
但教心似金钿坚,天上人间会相见。
临别殷勤重寄词,词中有誓两心知。
七月七日长生殿,夜半无人私语时。
在天愿作比翼鸟,在地愿为连理枝。
天长地久有时尽,此恨绵绵无绝期。
"""

import numpy as np
from keras.utils import to_categorical, plot_model
from keras.models import Model
from keras.layers import Dense, Input, LSTM

"""配置"""
units = 200  # LSTM神经元数量
len_input = 7  # 输入序列长度(输出序列长度=16-7=9)
epochs = 2000

"""语料加载"""
seqs = __doc__.replace('《长恨歌》——白居易', '').strip().split('\n')

"""构建序列和字库"""
seqs_input, seqs_output = [], []  # 输入、输出序列
chr_set_input, chr_set_output = set(), set()  # 字库
for seq in seqs:
    inputs, outputs = seq[:len_input], seq[len_input:]
    seqs_input.append(inputs)
    seqs_output.append(outputs)
    chr_set_input |= set(inputs)
    chr_set_output |= set(outputs)

num_classes_input = len(chr_set_input)
num_classes_output = len(chr_set_output)
print('字库量(输入)', num_classes_input, '字库量(输出)', num_classes_output)

"""构建字符和索引间的映射"""
chr2id_input = {c: i for i, c in enumerate(chr_set_input)}
chr2id_output = {c: i for i, c in enumerate(chr_set_output)}
id2chr_output = {i: c for c, i in chr2id_output.items()}
id_start = chr2id_output[',']  # 起点ID
id_end = chr2id_output['。']  # 终点ID

"""构建输入层和输出层"""
x_encoder = [[chr2id_input[c] for c in chrs] for chrs in seqs_input]
x_decoder = [[chr2id_output[c] for c in chrs[:-1]] for chrs in seqs_output]  # 起点+序列
y = [[chr2id_output[c] for c in chrs[1:]] for chrs in seqs_output]  # 序列+终点

x_encoder = to_categorical(x_encoder, num_classes=num_classes_input)
x_decoder = to_categorical(x_decoder, num_classes=num_classes_output)
y = to_categorical(y, num_classes=num_classes_output)
print('输入维度', x_encoder.shape, x_decoder.shape, '输出维度', y.shape)

"""创建联合模型"""
encoder_input = Input(shape=(None, num_classes_input))  # 编码器输入层
encoder_lstm = LSTM(units, return_state=True)  # 编码器LSTM层
_, encoder_h, encoder_c = encoder_lstm(encoder_input)  # 编码器LSTM输出
model_encoder = Model(encoder_input, [encoder_h, encoder_c])  # 【编码器模型】

decoder_input = Input(shape=(None, num_classes_output))  # 解码器输入层
decoder_lstm = LSTM(units, return_sequences=True, return_state=True)  # 解码器LSTM层
decoder_lstm_output, _, _ = decoder_lstm(
    decoder_input, initial_state=[encoder_h, encoder_c])  # 解码器LSTM输出
decoder_softmax = Dense(num_classes_output, activation='softmax')  # 解码器softmax层
decoder_output = decoder_softmax(decoder_lstm_output)  # 解码器输出

model = Model([encoder_input, decoder_input], decoder_output)  # 【联合模型】
model.compile('adam', 'categorical_crossentropy')
model.fit([x_encoder, x_decoder], y, epochs=epochs, verbose=2)

"""创建解码模型"""
decoder_h_input = Input(shape=(units,))  # 解码器状态输入层h
decoder_c_input = Input(shape=(units,))  # 解码器状态输入层c
decoder_lstm_output, decoder_h, decoder_c = decoder_lstm(
    decoder_input, initial_state=[decoder_h_input, decoder_c_input])  # 解码器LSTM输出
decoder_output = decoder_softmax(decoder_lstm_output)  # 解码器输出
model_decoder = Model([decoder_input, decoder_h_input, decoder_c_input],
                      [decoder_output, decoder_h, decoder_c])  # 【解码器模型】

"""模型可视化"""
plot_model(model, show_shapes=True, show_layer_names=False)
plot_model(model_encoder, 'encoder.png', show_shapes=True, show_layer_names=False)
plot_model(model_decoder, 'decoder.png', show_shapes=True, show_layer_names=False)

"""序列生成序列"""
def seq2seq(x_encoder_pred):
    h, c = model_encoder.predict(x_encoder_pred)
    id_pred = id_start
    seq = ''
    while id_pred != id_end:
        y_pred = to_categorical([[[id_pred]]], num_classes_output)
        output, h, c = model_decoder.predict([y_pred, h, c])
        id_pred = np.argmax(output[0])
        seq += id2chr_output[id_pred]
    return seq[:-1]

"""模型评估"""
for i in range(len(seqs)):
    seq = seq2seq(x_encoder[i: i + 1])
    print('原输入输出:%s' % seqs[i])
    print('模型输出:%s\n' % seq)

while True:
    chrs = input('输入:').strip()  # 输入7个字
    x_encoder_pred = to_categorical([[chr2id_input[c] for c in chrs]], num_classes_input)
    seq = seq2seq(x_encoder_pred)
    print('输出:%s\n' % seq)

模型可视化

训练器

编码器(从属于训练器)

解码器

训练结果展示


附录

另附【字符级英译中seq2seq】代码和语料下载地址

import numpy as np, os
from collections import Counter
from keras.preprocessing.sequence import pad_sequences
from keras.utils import to_categorical, plot_model
from keras.models import Model, load_model
from keras.layers import Dense, Input, LSTM

"""配置"""
corpus_path = 'en2cn.txt'
num_classes_input = 32 + 1  # 英文低频字过滤
num_classes_output = 1000 + 3  # 中文低频字过滤
chr_pad = ''  # 填充字符
chr_start = '['  # 起始字符
chr_end = ']'  # 结束字符
id_pad = 0  # 填充字ID
id_start = 1  # 起点ID
id_end = 2  # 终点ID

units = 400  # LSTM神经元数量
batchsize = 512
epochs = 1000

prefix = 'model/'  # 保存模型的文件夹
path_hdf5 = prefix + 'model.hdf5'
path_hdf5_encoder = prefix + 'encoder.hdf5'
path_hdf5_decoder = prefix + 'decoder.hdf5'
path_png = prefix + 'model.png'
path_png_encoder = prefix + 'encoder.png'
path_png_decoder = prefix + 'decoder.png'

def preprocess_data():
    """语料加载"""
    with open(corpus_path, encoding='utf-8') as f:
        seqs = f.read().lower().split('\n')

    """构建序列和字库"""
    seqs_input, seqs_output = [], []  # 输入、输出序列
    counter_input, counter_output = Counter(), Counter()  # 字库
    for seq in seqs:
        inputs, outputs = seq.split('\t')
        counter_input += Counter(list(inputs))
        counter_output += Counter(list(outputs))
        outputs = chr_start + outputs + chr_end  # 加入起终点
        seqs_input.append(inputs)
        seqs_output.append(outputs)

    # 过滤低频词
    counter_input = counter_input.most_common(num_classes_input - 1)
    counter_output = counter_output.most_common(num_classes_output - 3)

    # 加入字符(填充、起点、终点)到字库
    counter_input = [chr_pad] + [i[0] for i in counter_input]
    counter_output = [chr_pad, chr_start, chr_end] + [i[0] for i in counter_output]

    """字符和索引间的映射"""
    chr2id_input = {c: i for i, c in enumerate(counter_input)}
    chr2id_output = {c: i for i, c in enumerate(counter_output)}
    c2i_input = lambda c: chr2id_input.get(c, 0)
    c2i_output = lambda c: chr2id_output.get(c, 0)
    id2chr_output = {i: c for c, i in chr2id_output.items()}
    yield c2i_input, c2i_output, id2chr_output

    """输入层和输出层"""
    # 输入序列
    x_encoder = [[c2i_input(c) for c in chrs if c2i_input(c)] for chrs in seqs_input]
    # 起点 + 输出序列
    x_decoder = [[c2i_output(c) for c in chrs[:-1] if c2i_output(c)] for chrs in seqs_output]
    # 输出序列 + 终点
    y = [[c2i_output(c) for c in chrs[1:] if c2i_output(c)] for chrs in seqs_output]

    # 输入输出序列最大长度
    maxlen_input = max(len(i) for i in x_encoder)
    maxlen_output = max(len(i) for i in x_decoder)
    yield maxlen_input, maxlen_output

    # 序列截断或补齐为等长
    x_encoder = pad_sequences(x_encoder, maxlen_input, padding='post', truncating='post')
    x_decoder = pad_sequences(x_decoder, maxlen_output, padding='post', truncating='post')
    y = pad_sequences(y, maxlen_output, padding='post', truncating='post')

    # 独热码
    x_encoder = to_categorical(x_encoder, num_classes=num_classes_input)
    x_decoder = to_categorical(x_decoder, num_classes=num_classes_output)
    y = to_categorical(y, num_classes=num_classes_output)
    print('输入维度', x_encoder.shape, x_decoder.shape, '输出维度', y.shape)
    yield x_encoder, x_decoder, y

[(c2i_input, c2i_output, id2chr_output),
 (maxlen_input, maxlen_output),
 (x_encoder, x_decoder, y)] = list(preprocess_data())

if os.path.exists(prefix):
    """加载已训练模型"""
    model = load_model(path_hdf5)
    model_encoder = load_model(path_hdf5_encoder)
    model_decoder = load_model(path_hdf5_decoder)
else:
    """编码模型"""
    encoder_input = Input(shape=(None, num_classes_input))  # 编码器输入层
    encoder_lstm = LSTM(units, return_state=True)  # 编码器LSTM层
    _, encoder_h, encoder_c = encoder_lstm(encoder_input)  # 编码器LSTM输出
    model_encoder = Model(encoder_input, [encoder_h, encoder_c])  # 【编码模型】

    # 解码器
    decoder_input = Input(shape=(None, num_classes_output))  # 解码器输入层
    decoder_lstm = LSTM(units, return_sequences=True, return_state=True)  # 解码器LSTM层
    decoder_output, _, _ = decoder_lstm(
        decoder_input, initial_state=[encoder_h, encoder_c])  # 解码器LSTM输出
    decoder_dense = Dense(num_classes_output, activation='softmax')  # 解码器softmax层
    decoder_output = decoder_dense(decoder_output)  # 解码器输出

    """训练模型"""
    model = Model([encoder_input, decoder_input], decoder_output)  # 【训练模型】
    model.compile('adam', 'categorical_crossentropy')
    model.fit([x_encoder, x_decoder], y, batchsize, epochs, verbose=2)

    """解码模型"""
    decoder_h_input = Input(shape=(units,))  # 解码器状态输入层h
    decoder_c_input = Input(shape=(units,))  # 解码器状态输入层c
    decoder_output, decoder_h, decoder_c = decoder_lstm(
        decoder_input, initial_state=[decoder_h_input, decoder_c_input])  # 解码器LSTM输出
    decoder_output = decoder_dense(decoder_output)  # 解码器输出
    model_decoder = Model([decoder_input, decoder_h_input, decoder_c_input],
                          [decoder_output, decoder_h, decoder_c])  # 【解码模型】

    # 模型保存
    os.mkdir(prefix)
    plot_model(model, path_png, show_shapes=True, show_layer_names=False)
    plot_model(model_encoder, path_png_encoder, show_shapes=True, show_layer_names=False)
    plot_model(model_decoder, path_png_decoder, show_shapes=True, show_layer_names=False)
    model.save(path_hdf5)
    model_encoder.save(path_hdf5_encoder)
    model_decoder.save(path_hdf5_decoder)

"""序列生成序列"""
def seq2seq(x_encoder_pred):
    h, c = model_encoder.predict(x_encoder_pred)
    id_pred = id_start
    seq = ''
    for _ in range(maxlen_output):
        y_pred = to_categorical([[[id_pred]]], num_classes=num_classes_output)
        output, h, c = model_decoder.predict([y_pred, h, c])
        id_pred = np.argmax(output[0])
        seq += id2chr_output[id_pred]
        if id_pred == id_end:
            break
    return seq[:-1]

while True:
    chrs = input('输入:').strip().lower()
    x_encoder_pred = [[c2i_input(c) for c in chrs]]
    x_encoder_pred = pad_sequences(x_encoder_pred, maxlen_input, padding='post', truncating='post')
    x_encoder_pred = to_categorical(x_encoder_pred, num_classes_input)
    seq = seq2seq(x_encoder_pred)
    print('输出:%s\n' % seq)
Keras实现Seq2Seq预测模型 一个基于keras实现seq2seq(Encoder-Decoder)的序列预测例子 序列预测问题描述: 输入序列为随机产生的整数序列,目标序列是对输入序列前三个元素进行反转后的序列,当然这只是我们自己定义的一种形式,可以自定义更复杂的场景。 输入序列 目标序列 [13, 28, 18, 7, 9, 5] [18, 28, 13] [29, 44, ... 阅读详情

相关推荐

keras实现seq2seq做Chatbot

今天在《自然语言处理实战》一书中看到一个seq2seq实现的Chatbot的例子,感觉可以很好地体现出seq2seq的架构,这里我们一起来实现如何用seq2seq实现Chatbot。 首先,seq2seq架构大家都比较熟悉,我们一起来看看本文的seq2seq的架构是怎样的: 首先是encoder,这里我们使用LSTM,当encoder编码完成序列之后,会生成一个中间向量,然后中间向量连接着decoder,decoder用的也是LSTM,在decoder的部分,以作为解码的开始,作为解码的结束。整个Chat

深圳湾刘能的博客 976

长恨歌--白居易诗 戴敦邦插图(ZT)

汉皇重色思倾国,御宇多年求不得。杨家有女初长成,养在深闺人未识。天生丽质难自弃,一朝选在君王侧。回眸一笑百媚生,六宫粉黛无颜色。春寒赐浴华清池,温泉水滑洗凝脂。侍儿扶起娇无力,始是新承恩泽时。云鬓花颜金步摇,芙蓉帐暖度春宵。春宵苦短日高起,从此君王不早朝后宫佳丽三千人,三千宠爱在一身金屋妆成娇侍夜,玉楼宴罢醉和春姊妹弟兄皆列土,可怜光彩生门户。遂令天下父母心,不重生男重生女骊宫高处入青云,仙乐风飘

一辈子的孤单 2398

Keras实现Seq2Seq文本摘要的三大核心难点解析

Seq2Seq是一种经典的序列到序列建模范式,其原理在于编码器将输入序列压缩为上下文向量,解码器基于该向量及历史输出逐步生成目标序列。该技术的核心价值在于支持变长输入输出,广泛应用于机器翻译、新闻摘要和对话生成等任务。然而在实际工程中,Keras原生实现常因状态传递失准、注意力机制非因果、数据预处理不一致等问题导致生成质量骤降。本文聚焦Keras 2.10+环境下的落地实践,深入剖析Encoder-Decoder状态动态初始化、手写Bahdanau注意力确保时序因果性、以及语义感知的tokenization

weixin_30266885的博客 512

飘逸的python - 一段统计次数程序的进化

这段程序是从给定的列表中统计各个小伙伴以及他们的出现次数。 littlebuddys = ['jack','terry','john','rooney','ross','kzc','john','ross','ross'] 新手程序员 d = {} for buddy in littlebuddys: if buddy not in d: d[buddy

mattkang 4244

【NLP】一文理解Seq2Seq

Seq2Seq技术,全称Sequence to Sequence,该技术突破了传统的固定大小输入问题框架,开通了将经典深度神经网络模型(DNNs)运用于在翻译,文本自动摘要和机器人自动问答以及一些回归预测任务上,并被证实在英语-法语翻译、英语-德语翻译以及人机短问快答的应用中有着不俗的表现。

sikh_0529的博客 1万+

用逐飞STC32G库做个智能小车:编码器测速、PWM调电机、ADC读电池电压(完整项目)

本文详细介绍了如何使用逐飞科技的STC32G12K128开源库构建智能小车项目,涵盖编码器测速、PWM电机控制和电池电压监测等核心功能。通过硬件选型、开发环境搭建、代码实现及调试技巧的全流程讲解,帮助开发者快速掌握基于STC32G的嵌入式系统开发,实现高性能的智能小车控制。

weixin_42526417的博客 196

Keras 文字生成系统

  同是深度学习“槛内人”,我怎么不知道这样高大上的文字生成对话系统  文字信息是存在最广泛的信息形式之一,而深度学习的序列模型(Sequential Model)在对文字生成建模(Generative Model)方面具备独特的优势。文字自动生成可应用于自然语言对话建模和自动文稿生成,极大地提高了零售客服、网络导购以及新闻业的生产效率。目前比较成熟的是单轮对话系统以及基于单轮对话系统的简单多轮对...

博文视点(北京)官方博客 1780

基于虚拟阻抗重塑的构网型VSG变流器SISO序阻抗建模与宽频振荡抑制策略分析(面向高比例新能源并网场景)

本文深入探讨了基于虚拟阻抗控制的构网型VSG变流器SISO序阻抗建模技术及其在高比例新能源并网场景中的宽频振荡抑制策略。通过虚拟阻抗重塑,有效改善了变流器的阻抗特性,解决了次/超同步频段的振荡问题,并提供了参数设计、阻抗扫频验证等实用技巧,为新能源并网系统的稳定性提供了可靠解决方案。

weixin_29268385的博客 253

python中的词云图

wordcloud 是什么?词云图,也叫文字云,是对文本中出现频率较高的“关键词”予以视觉化的展现词云图过滤掉大量的低频低质的文本信息使得浏览者只要一眼扫过文本就可领略文本的主旨。

m0_73282576的博客 9931

EPICS电机支持(asynMotor)

EPICS电机支持(asynMotor)

yuyuyuliang00的博客 916

S32K144之芯片锁死解锁——关闭debug端口

S32K144之芯片锁死及解锁 经常捣鼓单片机就会发现,时常会因为某些操作不当导致芯片锁死情况的发生,通过Jlink我们可以读到芯片的ID,但是无法进行Debug,这很是让人苦恼。 基于S32K144的芯片锁死,一般有如下几种可能: 1、时钟配置异常,过高的配置时钟频率以及不配置时钟,都有可能造成芯片保护锁死,我就曾经因为不注意把时钟配置代码注释掉,导致芯片锁死。 2、我是微软雅黑烧写断电,如果在...

weixin_41935674的博客 1万+

seq2seq:如何在5分钟内用Keras构建你的第一个序列转换模型

想要快速掌握深度学习中的序列转换技术吗?seq2seq(序列到序列学习)是Keras的强大扩展库,让你在短短5分钟内就能构建自己的第一个序列转换模型!无论你是想开发智能聊天机器人、机器翻译系统,还是创建文本摘要工具,这个终极指南将带你从零开始,轻松上手。 ## 🚀 什么是seq2seq序列转换? seq2seq(Sequence to Sequence)是一种深度学习架构,专门处理输入和输出

gitblog_00299的博客 420

三边定位的最小二乘法运用

已知:条件基站到移动台的距离D,基站的坐标(xi,yi,zi) 求:移动台的坐标(x,y,z) 运用最小二乘法的核心是找到最小二乘法的矩阵形式即 Ax=B 在本次实验中通过三边定位计算得到 A=[A;2*(xi-x1),2*(yi-y1),2*(zi-z1]; %系数矩阵A b=[b;D1^2-Di^2+xi^2+yi^2+zi^2-x1^2-y1^2-z1^2]; %增广矩阵b

qq_26250141的博客 1万+

seq2seq 的 keras 实现

上一篇 seq2seq 入门 提到了 cho 和 Sutskever 的两篇论文,今天来看一下如何用 keras 建立 seq2seq。 第一个 LSTM 为 Encoder,只在序列结束时输出一个语义向量,所以其 “return_sequences” 参数设置为 “False”使用 “RepeatVector” 将 Encoder 的输出(最后一个 time step)复制 N 份作为 Deco

aliceyangxi1987的博客 1万+

uniapp [全端兼容] - 实现连接蓝牙电子秤+监听数据转换并实时返回示例代码,uniApp实现BLE蓝牙连接多个电子秤设备、蓝牙通讯协议对接详细教程(全平台兼容H5、微信小程序、苹果安卓App)

uniapp连接蓝牙电子秤,uniapp如何连接电子秤蓝牙,蓝牙称重,实现监听数据转换并实时返回,多蓝牙,uni-app电子秤16进制蓝牙通讯协议对接,uniapp微信小程序蓝牙获取电子秤的值,uniapp蓝牙称重电子秤,蓝牙电子秤硬件,APP端连接蓝牙秤获取重量实时显示在页面上蓝牙秤,插件组件,蓝牙连接失败,uniapp安卓苹果ios连接蓝牙电子秤没反应,uniapp微信小程序 蓝牙低功耗连接发送数据监听接收,uni-app小程序蓝牙连接、读写数据全过程,uniapp连接蓝牙体脂秤,蓝牙搜索不到怎么办,如

🏆 前端领域优质创作者 1万+

dex2oat编译优化调试

dex2oat编译调试的一些技巧和方法

jidapenglin28的专栏 5048

keras seq2seq_在Keras中建立具有Luong注意的Seq2Seq LSTM以进行时间序列预测

keras seq2seqDo you want to try some other methods to solve your forecasting problem rather than traditional regression? There are many neural network architectures, which are frequently applied in NL...

weixin_26752765的博客 2709

Python-增加b站视频播放量

如果条件允许的情况下,有代理API更好,每次请求url调用API也更方便。如果没有的话,也不用担心,网上本身也有着很多免费国内代理,不过代理是否可用需要自己花点时间去检测,检测方法笔者这里就不详述了,后面有时间的话会单独针对这一块做详细说明。在开始之前,需准备代理IP。总之,在每次请求url的时候,随机带入某个IP防止被平台检测,便于达到增加播放量预期。大致思路就是针对你的目标代理平台进行IP抓取,并存入到自己本地的IP代理池。本文是该专栏的第1篇,后面会持续更新对应平台干货知识,记得关注。

Python进阶专栏《爬虫实战进阶》,《Pyppeteer从入门到精通》原创作者 5215

十分钟教程:用Keras实现seq2seq学习

原文:A ten-minute introduction to sequence-to-sequence learning in Keras 作者:Francois Chollet 译者:雁惊寒 摘要:序列到序列学习(seq2seq)是一种把序列从一个域(例如英语中的句子)转换为另一个域中的序列(例如把相同的句子翻译成法语)的模型训练方法。目前有多种方法可以用来处理这个任务,可以...

博客 6946

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Keras实现seq2seq

【代码】Keras实现seq2seq

lymake的博客 965

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

keras的seq2seq

前面讲到seq2seq,网上有很多seq2seq的例子,今天具体解析一下keras的seq2seq(character-level)例子,代码是keras的github上的地址: https://github.com/keras-team/keras/blob/master/examples/lstm_seq2seq.py 前言 ''' Keras(字符级)中的序列到序列示例。这个脚本演示了...

hufei_neo的博客 773

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Keras-9 实现Seq2Seq

A ten-minute introduction to sequence-to-sequence learning in Keras 简单介绍如何用Keras实现Seq2Seq模型 原文链接 https://blog.keras.io/a-ten-minute-introduction-to-sequence-to-sequence-learning-in-keras.html 该博客的完整...

记录学习的过程 1万+

Seq2Seq详解及实现

1.Seq2Seq是什么?   Seq2Seq学习是训练一个模型,将来自一个领域的序列(例如英语语句)转换为另一个领域的序列(例如法语)。 "the cat sat on the mat" -> [Seq2Seq model] -> "le chat etait assis sur le tapis"   Seq2Seq模型可以用于机器翻译或者自由问答(在给定自然语言问题的情况下生成自然语言答案)。通常,它可以在任何需要生成文本的情况下使用。   我们可以使用多种方法来处理Seq2Seq任务,

大雄没有叮当猫的博客 7053

Keras实现LSTM Seq2Seq文本摘要实战指南

文本摘要作为典型的序列到序列(Seq2Seq)任务,其核心在于建模输入与输出之间的长程语义映射关系。基于编码器-解码器(encoder-decoder)架构的LSTM模型,凭借门控机制对时序依赖的有效捕获、固定维度上下文向量(context vector)的天然支持,以及轻量级部署能力,在中小规模中文新闻摘要场景中展现出显著工程优势。相比Transformer,它在有限数据(<10万条)和单卡GPU条件下更鲁棒;相比传统统计方法,它能端到端学习‘谁对谁做了什么’的事件结构。本文聚焦Keras框架下的可复现实

weixin_30896511的博客 427

【从官方案例学框架Tensorflow/Keras】数字加法seq2seq

【从官方案例学框架Keras】数字加法seq2seq,使用LSTM实现数字加法

阿芒Aris的博客 2万+
上一篇: Keras模型保存与加载
下一篇: Keras【极简】GAN
小基基o_O
博客等级 码龄9年 4414粉丝 467原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小基基o_O

您的鼓励是我创作的巨大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值