有人可以解释一下tensorflow的eager-mode
工作原理。我正在尝试建立一个简单的回归,如下所示:
编辑:我正在更新我的问题,这是我的完整代码,现在问题来自梯度计算,它返回零。我检查了非零的损失值。
import tensorflow as tf
tfe = tf.contrib.eager
tf.enable_eager_execution()
import numpy as np
def make_model():
net = tf.keras.Sequential()
net.add(tf.keras.layers.Dense(4, activation='relu'))
net.add(tf.keras.layers.Dense(1))
return net
def compute_loss(pred, actual):
return tf.reduce_mean(tf.square(tf.subtract(pred, actual)))
def compute_gradient(model, pred, actual):
"""compute gradients with given noise and input"""
with tf.GradientTape() as tape:
loss = compute_loss(pred, actual)
grads = tape.gradient(loss, model.variables)
return grads, loss
def apply_gradients(optimizer, grads, model_vars):
optimizer.apply_gradients(zip(grads, model_vars))
model = make_model()
optimizer = tf.train.AdamOptimizer(1e-4)
x = np.linspace(0,1,1000)
y = x+np.random.normal(0,0.3,1000)
y = y.astype('float32')
train_dataset …
Run Code Online (Sandbox Code Playgroud) 我有一个简单的机器翻译模型,可以将英语句子转换为法语句子.我想首先使用英文句子维度传递模型编码器.在被解码器翻译后,模型输出具有法语句子维度.这里的问题是英语句子,填充后法语句子的长度不同.如何在我的编码器和解码器之间进行重塑?
这是我的代码:
def encdec_model(input_shape, output_sequence_length, english_vocab_size, french_vocab_size):
learning_rate = 1e-3
input_seq = Input(input_shape[1:])
encoder = GRU(64, return_sequences=True)(input_seq)
decoder = GRU(64, return_sequences=True)(encoder)
logits = TimeDistributed(Dense(french_vocab_size))(decoder)
model = Model(input_seq, Activation('softmax')(logits))
model.compile(loss=sparse_categorical_crossentropy,
optimizer=Adam(learning_rate),
metrics=['accuracy'])
return model
Run Code Online (Sandbox Code Playgroud)
结果模型参数如下所示:
Layer (type) Output Shape Param #
_________________________________________________________________
input_13 (InputLayer) (None, 15, 1) 0
_________________________________________________________________
gru_16 (GRU) (None, 15, 64) 12672
_________________________________________________________________
gru_17 (GRU) (None, 15, 64) 24768
_________________________________________________________________
time_distributed_10 (TimeDis (None, 15, 344) 22360
_________________________________________________________________
activation_10 (Activation) (None, 15, 344) 0
_________________________________________________________________
Run Code Online (Sandbox Code Playgroud)
对于输入维度(15,1)
,我想将输出维度更改为(17,1) …
是否有任何经验法则可以num_leaves
在lightgbm
. 例如对于1000
特征数据集,我们知道使用tree-depth
of 10
,它可以覆盖整个数据集,因此我们可以相应地选择它,并且用于调优的搜索空间也受到限制。
但是在lightgbm
,我们如何粗略地猜测这个参数,否则使用网格搜索方法时它的搜索空间会非常大。
任何有关选择此参数的直觉都会有所帮助。
我正在使用 Jupyter 执行以下代码,但出现错误
import pandas as pd
from sklearn.tree import DecisionTreeClassifier
music_data = pd.read_csv('music.csv')
X = music_data.drop(columns=['genre'])
y = music_data['genre']
model = DecisionTreeClassifier()
model.fit(X,y)
music_data
Run Code Online (Sandbox Code Playgroud)
发生了错误:
ImportError Traceback (most recent call last)
<ipython-input-28-7af4ede8a769> in <module>
1 import pandas as pd
----> 2 from sklearn.tree import DecisionTreeClassifier
3
4 music_data = pd.read_csv('music.csv')
5 X = music_data.drop(columns=['genre'])
~\Anaconda3\lib\site-packages\sklearn\__init__.py in <module>
74 else:
75 from . import __check_build
---> 76 from .base import clone
77 from .utils._show_versions import show_versions
78
~\Anaconda3\lib\site-packages\sklearn\base.py in <module> …
Run Code Online (Sandbox Code Playgroud) machine-learning scikit-learn anaconda sklearn-pandas jupyter-notebook