tensorflow与神经网络中遇到的问题与解决方法【持续更新】

1、如何在全连接层拼接特征?

有一种方法是有两个input,一个input通过网络最终达到全连接层,另一个input直接接一个全连接网络,神经元数是特征数,这两个可以进行一个concat。  当然了也可以直接输入特征concat到全连接层,但是据说前者效果要好一点。

2、word2vec词向量如何在网络中更新?

在我的一个模型中(网络层次较浅),我用word2vec词向量的效果比之用随机词向量然后更新的效果要远远远远远远的不如!!!很绝望,发现word2vec词向量生成tensor又不能更新,不能微调!解决办法有两个:

  • 输入的word2vec词向量先接一个全连接层,进行参数的更新。加个dense层就行
  • 将这个权重更改为可训练的,如下代码:
  1. W = tf.get_variable(name="W", shape=embedding.shape, initializer=tf.constant_initializer(embedding), trainable=False)

3、RNN中的输出,state和output?

参考文章:https://blog.csdn.net/taoqick/article/details/79475350

简单来说如果是单层gru或者单层普通rnn,那么output和state是一样的;但如果是lstm cell ,那么state是包含c和h的,而output只有h,那么我们一般在接下一层网络进行后面的处理的时候是用的它的h,这样的话用output也是一样的。再看,如果是多层的cell,那么用output来代表h,其实也行,但是这个h是最上层的cell输出的h!

4、tensorflow矩阵转置?

有的时候比如说tensor的shape是(A,B,C)

这时候我想要将其shape转化为(A,C,B)

用到一个函数,tf.transpose()

参考文章:https://blog.csdn.net/banana1006034246/article/details/75126815

将(A,B,C)的tensor转化为(A,C,B)的tensor

out = tf.transpose(input,perm=[0,2,1])

猜你喜欢

转载自www.cnblogs.com/zhouxiaosong/p/11113747.html