Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Tensorflow-使用先前学习的权重初始化不同维度的新权重_Python_Tensorflow - Fatal编程技术网

Python Tensorflow-使用先前学习的权重初始化不同维度的新权重

Python Tensorflow-使用先前学习的权重初始化不同维度的新权重,python,tensorflow,Python,Tensorflow,我试图使用以前学习到的维度m的权重来初始化维度n的权重张量,其中n>m。我可以像下面那样做 all_weights['w1'] = tf.Variable(tf.zeros([n, output_sz], dtype=tf.float32)) all_weights['w1'] = all_weights['w1'][:m,:].assign(initial_weights['w1']) 然而,当实际学习发生时,我遇到了一个问题,如果我不使用体重分担,我就不会遇到这个问题w1最初是一个tf.变

我试图使用以前学习到的维度
m
的权重来初始化维度
n
的权重张量,其中
n>m
。我可以像下面那样做

all_weights['w1'] = tf.Variable(tf.zeros([n, output_sz], dtype=tf.float32))
all_weights['w1'] = all_weights['w1'][:m,:].assign(initial_weights['w1'])
然而,当实际学习发生时,我遇到了一个问题,如果我不使用体重分担,我就不会遇到这个问题
w1
最初是一个tf.变量,我注意到它在切片赋值后变成了一个张量对象:
Tensor(“跨步切片/\u赋值:0”)
。我的问题是我得到了错误:

`LookupError: No gradient defined for operation 'strided_slice_2/_assign' (op type: StridedSliceAssign)`.
这与类型(张量vs.tf.变量)有关吗?把张量转换成tf变量对某些人来说有意义吗?我试图这样做,但随后出现如下错误:

`FailedPreconditionError: Attempting to use uninitialized value Variable_4
 [[Node: strided_slice/_assign = StridedSliceAssign[Index=DT_INT32, T=DT_FLOAT, _class=["loc:@Variable_4"], begin_mask=3, ellipsis_mask=0, end_mask=2, new_axis_mask=0, shrink_axis_mask=0, _device="/job:localhost/replica:0/task:0/cpu:0"](Variable_4, strided_slice/stack, strided_slice/stack_1, strided_slice/stack_2, strided_slice/_assign/value)]]`

我是Tensorflow的新手,因此非常感谢您的帮助。谢谢

tf.变量
张量
是一个非常不同的东西。在他们之间“投”是没有意义的

最简单的解决方案是直接在
变量
创建中使用
初始权重
。例如,类似这样的内容:

import numpy as np
tf.Variable(np.append(initial_weights['w1'],
                      np.zeros((n-m, output_sz)),
                      axis=0),
            dtype=tf.float32)