- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试使用 RBM 预训练,使用 pylearn2
训练多层 ANN。我稍微修改了 pylearn2\pylearn2\scripts\tutorials\deep_trainer 中包含的名为 run_deep_trainer 的脚本。我想要一个 4 层网络,其中前 3 层由 500 个 GaussianBinaryRBM
组成,最后一个是 mlp.Softmax
层。
这是我创建的脚本:
from pylearn2.models.rbm import GaussianBinaryRBM
from pylearn2.models.softmax_regression import SoftmaxRegression
from pylearn2.models.mlp import Softmax
from pylearn2.training_algorithms.sgd import SGD
from pylearn2.costs.autoencoder import MeanSquaredReconstructionError
from pylearn2.termination_criteria import EpochCounter
from pylearn2.datasets.dense_design_matrix import DenseDesignMatrix
from pylearn2.energy_functions.rbm_energy import GRBM_Type_1
from pylearn2.blocks import StackedBlocks
from pylearn2.datasets.transformer_dataset import TransformerDataset
from pylearn2.costs.ebm_estimation import SMD
from pylearn2.training_algorithms.sgd import MonitorBasedLRAdjuster
from pylearn2.train import Train
from optparse import OptionParser
import numpy
def get_dataset_timitConsSmall():
print('loading timitConsSmall dataset...')
template = \
"""!obj:pylearn2.datasets.timitConsSmall.timit.TIMIT {
classes_number: 32,
which_set: %s,
}"""
trainset = yaml_parse.load(template % "train")
# testset = yaml_parse.load(template % "test")
print('...done loading timitConsSmall.')
return trainset
def get_grbm(structure):
n_input, n_output = structure
config = {
'nvis': n_input,
'nhid': n_output,
"irange": 0.05,
"energy_function_class": GRBM_Type_1,
"learn_sigma": True,
"init_sigma": .4,
"init_bias_hid": -2.,
"mean_vis": False,
"sigma_lr_scale": 1e-3
}
return GaussianBinaryRBM(**config)
def get_logistic_regressor(structure):
n_input, n_output = structure
layer = SoftmaxRegression(n_classes=n_output, irange=0.02, nvis=n_input)
return layer
def get_mlp_softmax(structure):
n_input, n_output = structure
layer = Softmax(n_classes=n_output, irange=0.02, layer_name='y')
return layer
def get_layer_trainer_softmax(layer, trainset):
# configs on sgd
config = {'learning_rate': 000.1,
'cost': Default(),
'batch_size': 100,
'monitoring_batches': 10,
'monitoring_dataset': trainset,
'termination_criterion': EpochCounter(max_epochs=MAX_EPOCHS_SUPERVISED),
'update_callbacks': None
}
train_algo = SGD(**config)
model = layer
return Train(model=model,
dataset=trainset,
algorithm=train_algo,
extensions=None)
def get_layer_trainer_logistic(layer, trainset):
# configs on sgd
config = {'learning_rate': 0.1,
'cost': Default(),
'batch_size': 10,
'monitoring_batches': 10,
'monitoring_dataset': trainset,
'termination_criterion': EpochCounter(max_epochs=MAX_EPOCHS_SUPERVISED),
'update_callbacks': None
}
train_algo = SGD(**config)
model = layer
return Train(model=model,
dataset=trainset,
algorithm=train_algo,
extensions=None)
def get_layer_trainer_sgd_rbm(layer, trainset):
train_algo = SGD(
learning_rate=1e-2,
batch_size=100,
# "batches_per_iter" : 2000,
monitoring_batches=20,
monitoring_dataset=trainset,
cost=SMD(corruptor=GaussianCorruptor(stdev=0.4)),
termination_criterion=EpochCounter(max_epochs=MAX_EPOCHS_UNSUPERVISED),
)
model = layer
extensions = [MonitorBasedLRAdjuster()]
return Train(model=model, algorithm=train_algo,
save_path='grbm.pkl', save_freq=1,
extensions=extensions, dataset=trainset)
def main(args=None):
trainset = get_dataset_timitConsSmall()
n_output = 32
design_matrix = trainset.get_design_matrix()
n_input = design_matrix.shape[1]
# build layers
layers = []
structure = [[n_input, 500], [500, 500], [500, 500], [500, n_output]]
# layer 0: gaussianRBM
layers.append(get_grbm(structure[0]))
# # layer 1: denoising AE
# layers.append(get_denoising_autoencoder(structure[1]))
# # layer 2: AE
# layers.append(get_autoencoder(structure[2]))
# # layer 3: logistic regression used in supervised training
# layers.append(get_logistic_regressor(structure[3]))
# layer 1: gaussianRBM
layers.append(get_grbm(structure[1]))
# layer 2: gaussianRBM
layers.append(get_grbm(structure[2]))
# layer 3: logistic regression used in supervised training
# layers.append(get_logistic_regressor(structure[3]))
layers.append(get_mlp_softmax(structure[3]))
# construct training sets for different layers
trainset = [trainset,
TransformerDataset(raw=trainset, transformer=layers[0]),
TransformerDataset(raw=trainset, transformer=StackedBlocks(layers[0:2])),
TransformerDataset(raw=trainset, transformer=StackedBlocks(layers[0:3]))]
# construct layer trainers
layer_trainers = []
layer_trainers.append(get_layer_trainer_sgd_rbm(layers[0], trainset[0]))
# layer_trainers.append(get_layer_trainer_sgd_autoencoder(layers[1], trainset[1]))
# layer_trainers.append(get_layer_trainer_sgd_autoencoder(layers[2], trainset[2]))
layer_trainers.append(get_layer_trainer_sgd_rbm(layers[1], trainset[1]))
layer_trainers.append(get_layer_trainer_sgd_rbm(layers[2], trainset[2]))
# layer_trainers.append(get_layer_trainer_logistic(layers[3], trainset[3]))
layer_trainers.append(get_layer_trainer_softmax(layers[3], trainset[3]))
# unsupervised pretraining
for i, layer_trainer in enumerate(layer_trainers[0:3]):
print('-----------------------------------')
print(' Unsupervised training layer %d, %s' % (i, layers[i].__class__))
print('-----------------------------------')
layer_trainer.main_loop()
print('\n')
print('------------------------------------------------------')
print(' Unsupervised training done! Start supervised training...')
print('------------------------------------------------------')
print('\n')
# supervised training
layer_trainers[-1].main_loop()
if __name__ == '__main__':
main()
无监督预训练部分正确,有监督训练部分出错:
Traceback (most recent call last):
File "run_deep_trainer.py", line 404, in <module>
main()
File "run_deep_trainer.py", line 400, in main
layer_trainers[-1].main_loop()
File "/home/gortolan/pylearn2/pylearn2/train.py", line 141, in main_loop
self.setup()
File "/home/gortolan/pylearn2/pylearn2/train.py", line 121, in setup
self.algorithm.setup(model=self.model, dataset=self.dataset)
File "/home/gortolan/pylearn2/pylearn2/training_algorithms/sgd.py", line 243, in setup
inf_params = [param for param in model.get_params()
File "/home/gortolan/pylearn2/pylearn2/models/model.py", line 503, in get_params
return list(self._params)
AttributeError: 'Softmax' object has no attribute '_params'
如果我在最后一层使用 SoftmaxRegression
(作为模型),这意味着替换函数 get_mlp_softmax()
和 get_layer_trainer_softmax()
使用 get_logistic_regressor()
和 get_layer_trainer_logistic()
,一切正常。
似乎模型 mlp.Softmax
没有通过函数 get_params()
返回参数 (_params
)。
有人知道如何解决这个问题吗?
最佳答案
问题是因为 SoftmaxRegressor
是一个模型,而 Softmax
是 MLP
的层。一种修复它的方法是
def get_mlp_softmax(structure):
n_input, n_output = structure
layer = MLP(nvis=500, layers=[Softmax(n_classes=n_output, irange=0.02, layer_name='y')])
return layer
其中MLP
是mlp.MLP
关于python - 在 pylearn2 中使用 RBM 预训练 ANN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33743944/
我正在阅读哈德利的 Advanced R并尝试一些东西。我正在尝试创建一个 lazy闭包函数返回一个带有提供的函数 data.frame在其环境中以及使用 with并且能够在以后提供额外的函数参数。
我有两个 ViewController。初始 ViewController 是输入和存储 URL 的地方。此初始 ViewController 的 viewDidLoad 还应该在应用程序启动时开始加
你是怎么用的 对于应用程序中的 ListView 项也应该在设备 <11 上运行? 由于 activated_state 在 HC 之前不可用,我只能想到两个肮脏的解决方法: 在您的 Activit
我正在为 android (2.1 > 3.1) 编写一个应用程序,我想使用熟悉的做法,即在 Honeycomb 应用程序中使用应用程序图标来进入家庭 Activity ,但是,当我之前运行该 Act
如果搜索的键不存在,我如何覆盖方法 GET 或编写一个将在服务器端执行的新函数返回另一个键值? 示例: 如果关键字“word_1 word_2 word_3 word_4”不存在则搜索关键字“word
对于我的存储库,我使用的是 Git 和 Stash。在 Stash 端,我限制了(只读)对 master 的访问权限,因此任何用户都可以从 master 分支分支以获取功能/分支,但不能直接 merg
如何配置dgrid及其存储以定义渲染行时是否已经选择了行? 例如,如果我的行数据是这样的: { id: 1, name: 'Item Name', selected: true } 我当前
有没有一种方法可以将变量从一个 BeanShell 前/后处理器引用到另一个 BeanShell 处理器(它们在同一个线程组中)? 如果我在 HTTP 请求下的 BeanShell 预处理器中创建了一
问题 我已尝试添加预操作 shell 脚本,这些脚本会根据我正在构建的内容打开/关闭我的 .pch 文件中的某些定义。 但是,在运行构建时,没有任何反应。我不是一个流利的 shell 脚本编写者,所以
我有一个 HTML 字符串用作 jQuery 输入文档。 // the variable html contains the HTML code jQuery( html ).find( 'p' ).
在 Mercurial 中允许 merge 之前有没有办法进行一些检查? 通过将以下内容添加到 ~/.hg/hgrc,我找到了更新前 Hook ,并拥有一个在允许更新之前运行的脚本: [hooks]
总结: 预 Controller Hook 是否在缓存期间执行?是否有任何 Hook 点可以执行? (系统前?) 我应该强调一个事实,即 Hook 不会影响发送到浏览器的内容。这不是问题。 详细版:
我正在使用适用于 android 的 Skobbler Map API,到目前为止它一直非常好。按照官方的“操作方法”,我已经能够将 map 应用到我的应用程序中。比我可以让应用程序下载 map 并离
当我安装bcrypt时我的 hapi js 项目的模块尚未安装,它显示类似 node-pre-gyp install --fallback-to-build 我尝试通过运行来安装; npm i nod
我试图使用此代码的变体: apply plugin: 'java' apply plugin: 'idea' idea.workspace.iws.withXml { provider ->
假设我们有一个 PHP 项目,其依赖项 A 和 B 分别依赖于 PHP 库 X,但版本不同。 通常,人们会使用诸如 composer 之类的 PHP 依赖管理器,它可以通过在与 A 和 B 兼容的版本
这似乎违背了代码块的目的,但我希望能够在代码块中加粗。例如,如果我想将返回行加粗: int main(void) { **return 0;** } 最佳答案 您必须在 HTML 中执行此操作
我们是否应该使用 Huggingface(预)训练一个 BERT 无框模型的小写输入数据?我查看了 Thomas Wolf ( https://github.com/huggingface/trans
我有两个模式: 技能: var mongoose = require("mongoose"); var SkillSchema = new mongoose.Schema({ skill: {
我这里有问题。这适用于 Chrome,但我无法在 IE11 的 index.html 中使用任何动画。当它不想工作时,我会看到一个静态屏幕。同样在 IE 中,消息不会像它应该的那样消失。如果我将 di
我是一名优秀的程序员,十分优秀!