Javascript 未知正则化器:tensorflowjs中的L2
我已经使用model在python中训练了一个模型Javascript 未知正则化器:tensorflowjs中的L2,javascript,tensorflow,machine-learning,tensorflow.js,Javascript,Tensorflow,Machine Learning,Tensorflow.js,我已经使用model在python中训练了一个模型 reg = 0.000001 model = Sequential() model.add(Dense(24, activation='tanh', name='input_dense', input_shape=input_shape)) model.add(GRU(24, activation='tanh', recurrent_activation='sigmoid', return_sequences=True, kernel_regu
reg = 0.000001
model = Sequential()
model.add(Dense(24, activation='tanh', name='input_dense', input_shape=input_shape))
model.add(GRU(24, activation='tanh', recurrent_activation='sigmoid', return_sequences=True, kernel_regularizer=regularizers.l2(reg), recurrent_regularizer=regularizers.l2(reg), reset_after=False))
model.add(Flatten())
model.add(Dense(2, activation='softmax'))
但当我使用“tensorflowjs_转换器——输入格式keras”转换这个模型并加载到浏览器中时,出现了错误
未处理的拒绝(错误):未知正则化器:L2。这可能是应得的
由于下列原因之一:
{
“格式”:“图层模型”,
“生成者”:“keras v2.4.0”,
“convertedBy”:“TensorFlow.js Converter v2.3.0”,
“模型拓扑”:{
“keras_版本”:“2.4.0”,
“后端”:“tensorflow”,
“模型配置”:{
“类别名称”:“顺序”,
“配置”:{
“名称”:“顺序”,
“层”:[
{
“类名称”:“输入层”,
“配置”:{
“批处理输入形状”:[null,22,13],
“dtype”:“float32”,
“稀疏”:错误,
“衣衫褴褛”:错误,
“名称”:“输入\u密集\u输入”
}
},
{
“类名”:“稠密”,
“配置”:{
“名称”:“输入”,
“可培训”:没错,
“批处理输入形状”:[null,22,13],
“dtype”:“float32”,
“单位”:24,
“激活”:“tanh”,
“使用偏见”:正确,
“内核_初始值设定项”:{
“类别名称”:“GlorotUniform”,
“config”:{“seed”:null}
},
“bias_初始值设定项”:{“class_name”:“Zeros”,“config”:{},
“内核正则化器”:null,
“偏差正则化器”:null,
“活动\正则化器”:null,
“内核约束”:null,
“偏差约束”:空
}
},
{
“类别名称”:“GRU”,
“配置”:{
“名称”:“gru”,
“可培训”:没错,
“dtype”:“float32”,
“返回_序列”:true,
“返回状态”:false,
“向后走”:错,
“有状态”:错误,
“展开”:错误,
“时间大调”:错,
“单位”:24,
“激活”:“tanh”,
“反复激活”:“乙状结肠”,
“使用偏见”:正确,
“内核_初始值设定项”:{
“类别名称”:“GlorotUniform”,
“config”:{“seed”:null}
},
“循环_初始值设定项”:{
“类名称”:“正交”,
“配置”:{“增益”:1.0,“种子”:null}
},
“bias_初始值设定项”:{“class_name”:“Zeros”,“config”:{},
“内核正则化器”:{
“类别名称”:“L2”,
“配置”:{“l2”:9.999999774752427E-7}
},
“递归正则化器”:{
“类别名称”:“L2”,
“配置”:{“l2”:9.999999774752427E-7}
},
“偏差正则化器”:null,
“活动\正则化器”:null,
“内核约束”:null,
“循环_约束”:空,
“偏差约束”:空,
“辍学”:0.0,
“经常性辍学”:0.0,
"落实":二,,
“复位后”:false
}
},
{
“类名称”:“展平”,
“配置”:{
“名称”:“展平”,
“可培训”:没错,
“dtype”:“float32”,
“数据格式”:“最后一个通道”
}
},
{
“类名”:“稠密”,
“配置”:{
“名称”:“密度”,
“可培训”:没错,
“dtype”:“float32”,
“单位”:2,
“激活”:“softmax”,
“使用偏见”:正确,
“内核_初始值设定项”:{
“类别名称”:“GlorotUniform”,
“config”:{“seed”:null}
},
“bias_初始值设定项”:{“class_name”:“Zeros”,“config”:{},
“内核正则化器”:null,
“偏差正则化器”:null,
“活动\正则化器”:null,
“内核约束”:null,
“偏差约束”:空
}
}
]
}
},
“培训配置”:{
“损失”:“绝对熵”,
“指标”:[“准确度”],
“加权_度量”:空,
“损失权重”:空,
“优化器配置”:{
“类别名称”:“Nadam”,
“配置”:{
“名称”:“那达慕”,
“学习率”:0.002000094909926,
“衰变”:0.004000000189989805,
“beta_1”:0.8999979761581421,
“beta_2”:0.9990000128746033,
“ε”:1e-7
}
}
}
},
“权重最大”:[
{
“路径”:[“group1-shard1of1.bin”],
“重量”:[
{“name”:“dense/kernel”,“shape”:[528,2],“dtype”:“float32”},
{“name”:“dense/bias”,“shape”:[2],“dtype”:“float32”},
{“name”:“gru/gru_cell/kernel”,“shape”:[24,72],“dtype”:“float32”},
{
“名称”:“gru/gru_单元/循环_内核”,
“形状”:[24,72],
“数据类型”:“float32”
},
{“name”:“gru/gru_cell/bias”,“shape”:[72],“dtype”:“float32”},
{“name”:“input_dense/kernel”,“shape”:[13,24],“dtype”:“float32”},
{“名称”:“输入密度/偏差”,“形状”:[24],“数据类型”:“浮动32”}
]
}
]
}
选项1
没有类L1
和L2
;它们只是接口(更多)
有一个类L1L2
,它将接受配置并返回正确的正则化器。您可以手动将所有出现的L2
替换为L1L2
选择2
注册一个L2类
class L2 {
static className = 'L2';
constructor(config) {
return tf.regularizers.l1l2(config)
}
}
tf.serialization.registerClass(L2);
// now load the model