python - 错误的维度数:预期 1,得到 2
问题描述
我正在对用于二进制分类的数据集进行逻辑回归,但由于某些原因我无法训练模型。错误:
TypeError: Bad input argument to theano function with name "<ipython-input-41-da82a78c1e80>:4" at index 1 (0-based).
Backtrace when that variable is created:
File "/usr/local/lib/python3.6/dist-packages/ipykernel/kernelbase.py", line 233, in dispatch_shell
handler(stream, idents, msg)
File "/usr/local/lib/python3.6/dist-packages/ipykernel/kernelbase.py", line 399, in execute_request
user_expressions, allow_stdin)
File "/usr/local/lib/python3.6/dist-packages/ipykernel/ipkernel.py", line 208, in do_execute
res = shell.run_cell(code, store_history=store_history, silent=silent)
File "/usr/local/lib/python3.6/dist-packages/ipykernel/zmqshell.py", line 537, in run_cell
return super(ZMQInteractiveShell, self).run_cell(*args, **kwargs)
File "/usr/local/lib/python3.6/dist-packages/IPython/core/interactiveshell.py", line 2718, in run_cell
interactivity=interactivity, compiler=compiler, result=result)
File "/usr/local/lib/python3.6/dist-packages/IPython/core/interactiveshell.py", line 2822, in run_ast_nodes
if self.run_code(code, result):
File "/usr/local/lib/python3.6/dist-packages/IPython/core/interactiveshell.py", line 2882, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "<ipython-input-37-e46f93a2582c>", line 2, in <module>
y = T.ivector('y')
Wrong number of dimensions: expected 1, got 2 with shape (1096, 1).
请有人告诉我如何解决这个问题,因为我是 theano 的新手。
import pandas as pd
import io
from sklearn import preprocessing
test_data = pd.read_csv('bank_data_test.csv').to_numpy()
train_data= pd.read_csv('bank_data_train.csv').to_numpy()
y_train=train_data[:,:1]
y_test=test_data[:,:1]
x_train=train_data[:,1:]
x_test=test_data[:,1:]
sc=StandardScaler()
sc.fit(x_train)
x_train=sc.transform(x_train)
x_test=sc.transform(x_test)
y_train.shape
x = T.fmatrix('x')
y = T.ivector('y')
w_init=np.zeros(x_train.shape[1])
b_init=0.0
w=theano.shared(w_init)
b=theano.shared(b_init)
hypo=1.0/(1.0+T.exp(-T.dot(x,w)-b))
py_x=hypo>0.5
cost=-T.mean(y*T.log(hypo)+(1-y)*T.log(1-hypo))
w_grad=T.grad(cost,w)
b_grad=T.grad(cost,b)
train_op=theano.function(inputs=[x,y],outputs=cost,updates=[
(w,w-0.05*w_grad),
(b,b-0.05*b_grad)],
allow_input_downcast=True)
predict_op=theano.function(inputs=[x],outputs=py_x,allow_input_downcast=True)
for i in range(2000):
train_op(x_train,y_train)
它显示的错误是:
train_op(x_train,y_train)
解决方案
它看起来像y
一个矩阵而不是一个向量。要解决此尝试:
y = T.ivector('y')[0]
反而。
推荐阅读
- regex - 正则表达式删除包含 3 个或更多特定字符出现的行
- jenkins - 当所有子作业都成功时,Jenkins 多作业显示失败
- sql-server - 插入时间 (7) 数据类型 SQL Server
- python - 如何在值之前和之后找到索引?
- spring-security - Spring Metrics Collector 配置与 Spring 云数据流 docker-compose
- javascript - 如何将下拉菜单添加到传单标记?
- wpf - WPF - 根据项目模板更改组合框样式
- python - Python Selenium 下拉菜单选择
- rust - 避免在 Rust 中未定义变量时无法访问的“匹配”结构中的“使用可能未初始化的变量”
- reactjs - Reactjs 多选列表框