我的项目正在使用 google colab 但未使用 pycharm
Posted
技术标签:
【中文标题】我的项目正在使用 google colab 但未使用 pycharm【英文标题】:My project is working on google colab but not working on pycharm 【发布时间】:2021-09-02 06:45:12 【问题描述】:我的项目是一个手写数字分析器。它正在 Google Colab 上运行,但在 Pycharm 上显示错误。使它在 colab 中工作的语句是“%matplotlib inline”,这一行在 pycharm 中显示错误。
from sklearn.datasets import fetch_openml
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn import metrics
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
mnist = fetch_openml("mnist_784")
plt.figure(figsize=(20, 4))
for index, (image, label) in enumerate(zip(mnist.data[:5], mnist.target[:5])):
plt.subplot(1, 5, index + 1)
plt.imshow(np.reshape(image, (28, 28)), cmap="gray")
plt.title("Number: %s" % label)
X_train, X_test, y_train, y_test = train_test_split(mnist.data, mnist.target, test_size=0.2)
mdl = LogisticRegression(solver="lbfgs")
mdl.fit(X_train, y_train)
predictions = mdl.predict(X_test)
score = mdl.score(X_test, y_test)
index = 0
plt.imshow(np.reshape(X_test[index], (28, 28)))
print("Prediction: " + mdl.predict([X_test[index]])[0])
cm = metrics.confusion_matrix(y_test, predictions)
plt.figure(figsize=(9, 9))
plt.imshow(cm, cmap='Pastell')
plt.title('Confusion Matrix for MNIST Data')
plt.xticks(np.arange(10))
plt.yticks(np.arange(10))
plt.ylabel('Actual Label')
plt.xlabel('Predicted Label')
plt.colorbar()
width, height = cm.shape
for x in range(width):
for y in range(height):
plt.annotate(str(cm[x][y]), xy=(y, x), horizontalalignment='center',
verticalalignment='center')
Traceback(最近一次调用最后一次): 文件“C:\Users\Asus\PycharmProjects\pythonProject\Handwriting_Digit_Recognition\digit.py”,第 15 行,在 plt.imshow(np.reshape(image, (18, 18)), cmap="gray") 文件“array_function internals>”,第 5 行,正在重塑 文件“C:\Users\Asus\PycharmProjects\pythonProject\venv\lib\site-packages\numpy\core\fromnumeric.py”,第 299 行,重塑 return _wrapfunc(a, 'reshape', newshape, order=order) _wrapfunc 中的文件“C:\Users\Asus\PycharmProjects\pythonProject\venv\lib\site-packages\numpy\core\fromnumeric.py”,第 55 行 return _wrapit(obj, 方法, *args, **kwds) _wrapit 中的文件“C:\Users\Asus\PycharmProjects\pythonProject\venv\lib\site-packages\numpy\core\fromnumeric.py”,第 44 行 结果 = getattr(asarray(obj), 方法)(*args, **kwds) ValueError: 无法将大小为 1 的数组重塑为形状 (18,18)
【问题讨论】:
【参考方案1】:这是 Pycharm 使用 GPU 时的冲突问题。解决方法是在使用tensorflow时添加代码:
import tensorflow as tf
config = tf.compat.v1.ConfigProto()
config.gpu_options.allocator_type = 'BFC' #A "Best-fit with coalescing" algorithm, simplified from a version of dlmalloc.
config.gpu_options.per_process_gpu_memory_fraction = 0.3
config.gpu_options.allow_growth = True
tf.compat.v1.keras.backend.set_session(tf.compat.v1.Session(config=config))
【讨论】:
这没有提供问题的答案。您可以search for similar questions,或参考页面右侧的相关和链接问题找到答案。如果您有一个相关但不同的问题,ask a new question,并包含指向此问题的链接以帮助提供上下文。见:Ask questions, get answers, no distractions【参考方案2】:在第 13 行的 for 循环之后,尝试缩进所有代码,直到
X_train, X_test, y_train, y_test = train_test_split(mnist.data, mnist.target, test_size=0.2)
行(但不要缩进该行)。该错误与%matplotlib inline
无关,但我认为这是解决方案。让我尽快知道它是否有效。不过,这是假设您的其余代码有效!
不要忘记 Python 依赖于缩进不像其他语言
!
【讨论】:
【参考方案3】:%matplotlib inline
是给 Jupyter notebook 的消息,用于将图像渲染到 notebook 本身。如果您使用 Pycharm 中的代码,则需要删除该行。
【讨论】:
我已经编辑了问题并添加了错误部分。以上是关于我的项目正在使用 google colab 但未使用 pycharm的主要内容,如果未能解决你的问题,请参考以下文章