如果有任何关于学习方法(或更可能的学习程序)的好例子,我也阅读了这篇论文并用谷歌搜索
对于word2vec,假设有语料句
我每天早上带着妈妈包的饭盒去上学
然后窗口大小为 2,它将尝试通过使用周围的词来获取 'school' 的向量
['去','去','一起','午餐']
现在,FastText 说它使用 subword 来获取向量,所以它肯定是使用 n gram subword,例如 n=3,
['sc', 'sch', 'cho', 'hoo', 'ool', 'school']
到这里,我明白了。但尚不清楚其他词是否用于“学校”的学习。我只能猜测周围的其他词也像 word2vec 一样被使用,因为论文中提到
=> 术语Wc和Wt都用在函数中
其中 Wc 是上下文词,Wt 是序列 t 处的词。
但是,FastText 是如何学习词向量的还不清楚。
.
.
请清楚说明FastText学习过程是如何进行的?
.
.
更确切地说,我想知道,如果FastText也遵循相同的步骤,Word2Vec同时学习到正克表征子字除。还是仅使用带有单词的 n-gram 特征子词?
它如何在初始时对子词进行矢量化?等等
好吧,似乎在堆栈溢出中提出了几个类似的问题,但似乎没有一个回答正确或正确,也没有描述确切的示例。
我在将数组或列表保存到 hdf5 时遇到问题...
我有几个文件包含 (n, 35) 维度的列表,其中每个文件中的 n 可能不同。它们中的每一个都可以使用以下代码保存在 hdf5 中。
hdf = hf.create_dataset(fname, data=d)
Run Code Online (Sandbox Code Playgroud)
但是,如果我想合并它们以在 3d 中制作,则会出现如下错误。
Object dtype dtype('O') 没有本地 HDF5 等效项
我不知道为什么它会变成 dtype 对象,因为我所做的只是这个
all_data = list()
for fname in file_list:
d = np.load(fname)
all_data.append(d)
hdf = hf.create_dataset('all_data', data=all_data)
Run Code Online (Sandbox Code Playgroud)
我怎样才能保存这样的数据?我尝试了几个测试,当我用
all_data = np.array(all_data)
Run Code Online (Sandbox Code Playgroud)
看起来它在保存 hdf5 时有类似的问题。
同样,如何将这些数据保存在 hdf5 中?
似乎它会自动使用gpu,但我不知道为什么。
首先,我声明如下
tf_config = tf.ConfigProto( allow_soft_placement=True )
tf_config.gpu_options.allow_growth = True
sess = tf.Session(config=tf_config)
keras.backend.set_session(sess)
Run Code Online (Sandbox Code Playgroud)
然后我定义了一些模型如下
with K.tf.device('/gpu:0'):
some keras model
Run Code Online (Sandbox Code Playgroud)
很明显它将使用gpu,并且我检查了它是否按预期使用了第一个gpu(索引为0)。
但是后来我把线移开了
with K.tf.device('/gpu:0'):
Run Code Online (Sandbox Code Playgroud)
并重新确定所有keras模型。我运行了代码,看起来仍然像是使用第一个gpu(索引为0)。
在我的ubuntu上,我使用nvidia-smi命令检查gpu的内存使用情况,然后在Windows上查看了进程管理器。
他们两个都使用gpu内存及其用法。
据我所知,如果我不将tensorflow保留到其模型中,则不会使用gpu。但是使用Keras似乎它会自动使用gpu ...是因为我运行了代码
tf_config = tf.ConfigProto( allow_soft_placement=True )
tf_config.gpu_options.allow_growth = True
sess = tf.Session(config=tf_config)
keras.backend.set_session(sess)
Run Code Online (Sandbox Code Playgroud)
还是我想念其他原因吗?