Python Theano TypeError: Cannot convert Type TensorType(float64, vector) (of Variable Subtensor{int64:int64:}.0) into Type TensorType(float64, matrix)

参考: https://groups.google.com/forum/#!topic/theano-users/teA-07wOFpE

这个问题出现的原因是,我在读文件的时候,应该Train_X读成matrix(rows * dimensions),Train_Y读成vector(因为只有label一维)

因为才接触python第一天,所以误以为column=1的matrix就是vector(汗汗汗!)

话不多说,直接贴代码:

train_X_matrix = numpy.empty((train_rows,n_ins),numpy.float64)#初始化为矩阵
train_Y_matrix = []#为什么要初始化为list,详见下面解释

#按行读文件的float进矩阵
rownum = 0
f = open(train_X_path)
for line in f.readlines():
    train_X_matrix[rownum] = numpy.asarray(line.strip(‘\n ‘).split(‘ ‘), dtype=float)
    rownum += 1

#按行读每一行的int进vector
f = open(train_Y_path)
for line in f.readlines():
    train_Y_matrix.append(int(line.strip(‘\n‘)))
train_Y_matrix = numpy.asarray(train_Y_matrix)

为什么要初始化list,而非直接初始化一个numpy的array,然后一行一行加呢?

因为网上的一篇文章提到:(参考:http://stackoverflow.com/questions/568962/how-do-i-create-an-empty-array-matrix-in-numpy)

“You have the wrong mental model for using NumPy efficiently. NumPy arrays are stored in contiguous blocks of memory. If you want to add rows or columns to an existing array, the entire array needs to be copied to a new block of memory, creating gaps for the new elements to be stored. This is very inefficient if done repeatedly to build an array.”

意思是什么呢?就是numpy array是连续在内存中保存的,如果append的话它会不断copy block到新内存,效率太低。

他提供的方式是,先初始化固定大小,然后逐行改array的值,如下:

>>> import numpy
>>> a = numpy.zeros(shape=(5,2))
>>> a
array([[ 0.,  0.],
   [ 0.,  0.],
   [ 0.,  0.],
   [ 0.,  0.],
   [ 0.,  0.]])
>>> a[0] = [1,2]
>>> a[1] = [2,3]
>>> a
array([[ 1.,  2.],
   [ 2.,  3.],
   [ 0.,  0.],
   [ 0.,  0.],
   [ 0.,  0.]])

但是感觉这样还是不方便,于是就先初始化空list,再不断append,最后全部转化为numpy 的 array,就是代码中写的。

这里为什么非要转化为numpy的array呢?

因为theano代码中默认的是需要share成他的tensor型变量(这句话待定,时间到了,具体不误人子弟了,反正就是他需要share一下)

Python Theano TypeError: Cannot convert Type TensorType(float64, vector) (of Variable Subtensor{int64:int64:}.0) into Type TensorType(float64, matrix),布布扣,bubuko.com

时间: 2024-10-10 16:48:24

Python Theano TypeError: Cannot convert Type TensorType(float64, vector) (of Variable Subtensor{int64:int64:}.0) into Type TensorType(float64, matrix)的相关文章

python报"TypeError: object of type 'Greenlet' has no len()"

TypeError: object of type 'Greenlet' has no len() 问题代码: gevent.joinall( gevent.spawn(func1), gevent.spawn(func2), gevent.spawn(func3), ) 应该为: gevent.joinall([ gevent.spawn(func1), gevent.spawn(func2), gevent.spawn(func3), ]) 总结:gevent.joinall()的参数应该为

Python Theano ValueError: y_i value out of bounds

参考 https://groups.google.com/forum/#!topic/theano-users/tY3fNAPYd9k 这个问题是由于outs的数量没有设置对. 里面写到 “except that you should specify "n_out=6", because there are 6 different target classes (numbered from 0 to 5 inclusively). ” 也就是说n_out设置为6的话,Test_Y中的l

Python Theano 一键安装

Download Anaconda Anaconda is a completely free Python distribution (including for commercial use and redistribution). It includes over 195 of the most popular Python packages for science, math, engineering, data analysis. 下载地址 : http://continuum.io/

Python Socket TypeError: a bytes-like object is required, not 'str' 错误提示

在学习socket编程时,遇到代码返回如下错误: TypeError: a bytes-like object is required, not 'str' 发现这里python3.5和Python2.7在套接字返回值解码上有区别. 首先可以明确,在python3中默认的编码方式是unicode.unicode 分为 utf-32(占4个字节),utf-16(占两个字节),utf-8(占1-4个字节),因此 utf-16就是现在最常用的unicode版本. 不过考虑到utf8省空间,在文件里存的

关于Python的TypeError not all arguments converted during string formatting

前言 在把yolov3的cfg文件转换为model_defs时,我忘记把str类型转换成int了,导致了一个错误,在此记录下来. 正文 如上图所示,'32'%2就是错误发生的地方. 我以为我拿到的是一个int类型的32,想判断它是偶数还是奇数. 实际上我拿到的是一个str类型的'32',这时python的解释器并没有把%理解成取余,而是理解成了这种东西. 我不知道"这种东西"的定义,但知道其用法和语法,其语法是这样的: name = 'cxy' print('%s is handsom

ValueError: Attempt to reuse RNNCell <tensorflow.contrib.rnn.python.ops.core_rnn_cell_impl.BasicLSTMCell object at 0x7f1a3c448390> with a different variable scope than its first use.解决方法

最近在做生成电视剧本小项目,遇到以下报错 --------------------------------------------------------------------------- ValueError Traceback (most recent call last) <ipython-input-16-a2d9a7091ca5> in <module>() 10 input_data_shape = tf.shape(input_text) 11 cell, ini

variable `xxx&#39; has initializer but incomplete type

错误:variable `xxx' has initializer but incomplete type 原因:xxx对应的类型没有找到,只把xxx声明了但是没给出定义.编译器无从确认你调用的构造函数是什么,在哪儿一般是没有包含定义xxx的头文件. 比如: 1 MyClass theObj; 2 const QMetaObject* metaObj = theObj.metaObject(); 3 //1.遍历类的属性 4 int propertyCnt = metaObj->property

Python疑难杂症02----解决UnicodeDecodeError: &#39;ascii&#39; codec can&#39;t decode byte 0xe6 in position 0

我的Linux服务器的Python版本是2.*,在将中文encode(UTF-8)的时候出现了UnicodeDecodeError: 'ascii' codec can't decode byte 0xe6 in position 0: ordinal not in range(128)的问题.而在3.*中没有问题. 解决方法: 在代码前端加入 import sys reload(sys) sys.setdefaultencoding('utf8') Python 2.x,字符编码方面,设计的不

Azkaban 2.5.0 job type 插件安装

一.环境及软件 安装环境: 安装目录: /usr/local/ae/ankaban Hadoop 安装目录 export HADOOP_HOME=/usr/local/ae/hadoop-1.2.1 azkaban-executor-2.5.0安装目录:/usr/local/ae/azkaban/azkaban-executor-2.5.0 安装软件: azkaban-jobtype-2.5.0.tar.gz Azkaban jobtype plugin source:github.com/az