当前位置: 首页 > 知识库问答 >
问题:

对控制台| Python的许多调用w/out print()

松钊
2023-03-14

在许多调用中,我的print语句不会显示在控制台上。

我的程序的目的是在感知器中显示向前传球后的数学“计算”。然而,数学知识在这里并不重要。

让我们粗略地假设引用的任何数学都是正确的。

我的问题发生在Perceptron.py中的#--OUTPUT--

请原谅程序的大小。

main.py

import os
os.system('clear')
import Perceptron

Perceptron.py

import ActivationFunctions as af
import numpy as np
from math import e

X = [[0.5, 0.3], [-0.5, 0.9], [0, -0.1], [1, 0]]
target = 0.7
LR = 0.01
dp = 5

# ----- Forward Pass -----
print('Forward Pass')

# -- INPUT --
in_str = 'in = '
for input in X:
  substr = '('+str(input[0])+' x '+str(input[1])+') + '
  in_str += substr
in_str = in_str[:-3]
print(in_str)

calcs = [x * y for x, y in X]
in_str = '   = '
for c in calcs:
  substr = '('+str(c)+') + '
  in_str += substr
in_str = in_str[:-3]
print(in_str)

ans = round(sum([x * y for x, y in X]), dp)
print('   = ' + str(ans))
print()

# PROBLEM OCCURS HERE
# -- OUTPUT --
# SIGMOID
out = af.invoker('softmax', LR, ans, dp)
print()

激活unctions.py

import numpy as np
from math import e

def binary_step(ans, dp):
  if ans >= 0: return 1
  else: return 0

def identity(ans, dp):
  return round(ans, dp)

def logistic(ans, dp):
  return round((1)/(1+(e**-ans)), dp)

def tanh(ans, dp):
  return round(((e**ans) - (e**-ans))/((e**ans) + (e**-ans)), dp)

def relu(ans, dp):
  if ans < 0: return 0
  else: return round(ans, dp)

def leaky_relu(LR, ans, dp):
  if ans < 0: return round(LR*ans, dp)
  else: return round(ans, dp)

def softmax(ans, dp):
  print('out = 1 / (1 + e^-'+str(+ans)+')')
  out = round(1 / (1 + e**-ans), dp)
  print('    = '+str(out))
  return out

def invoker(name, LR, ans, dp):
  name = name.lower()
  if 'binary' or 'step' in name: return binary_step(ans, dp)
  elif name == 'identity': return identity(ans, dp)
  elif name == 'logistic': return logistic(ans, dp)
  elif name == 'tanh': return tanh(ans, dp)
  elif name == 'relu': return relu(ans, dp)
  elif name == 'lrelu' or 'leaky' in name: return leaky_relu(LR, ans, dp)
  elif name == 'softmax': return softmax(ans, dp)
  else: print("ENTER VALID ACTIVATION FUNCTION")

输出应显示在以下内容之后:

Forward Pass
in = (0.5 x 0.3) + (-0.5 x 0.9) + (0 x -0.1) + (1 x 0)
   = (0.15) + (-0.45) + (-0.0) + (0)
   = -0.3

共有1个答案

魏高邈
2023-03-14

正如好心的评论家所指出的那样;在ActivationFunctions.py中:

方法invoker()中的初始if语句需要在其条件中显式。

if 'binary' or 'step' in name: return binary_step(ans, dp)

应该是:

if 'binary' in name or 'step' in name: return binary_step(ans, dp)

其中:in name被声明两次。否则,我们会提到一个可能的子字符串二进制,但原因是什么?

 类似资料:
  • 所以,我的代码是 但是控制台是空的。没有错误,什么都没有。我做错了什么?

  • 当我搜索这个时,我找不到任何信息(可能我搜索了错误的关键字),但我需要一种方法,我可以让调试器在运行时输出我自己的字串,有点像System.out.print语句,但改为控制台窗口。 也许我只是个笨蛋,但我也想在有人告诉我这个问题之前问一下:在您完成程序并创建jar之后,system.out.print、println和printf语句是否会在运行时打印到命令提示符。我的程序使用JFrame和se

  • 我无法在Eclipse中运行python控制台。我下载了Pydev,设置了一个解释器和一个PYTHONPATH并导入了一个项目,一个Django项目。我将项目设置为Django的一个,然后我尝试右键单击带有Django环境的Project-->Django-->Shell。 我在控制台中出现了以下错误: 如果我尝试打开一个Windows shell并执行通常的python manage.py sh

  • 好吧,我有一个函数(不完全是下面写的那个,那个只是一个例子) 现在的问题是,人们可以进入控制台,只需键入“test()”并调用函数。 有没有办法防止这种情况?我不想让很多人从控制台调用函数。

  • 我对通过关联has_many有问题。不知何故 u.groups.create!(:名称 = (0.1ms)开始事务SQL(4.5ms)插入"组"("created_at","findeble","name","学校","updated_at")值 (?, ?, ?, ?, ?) [["created_at", Tue,01 Oct 2013 08:13:36 UTC 00:00],["findeb

  • 当调用为时,可以执行,打开带有文件的默认编辑器。我想使用“两个进程”模型,以便我可以将多个客户端附加到同一个内核。但这似乎不允许打开编辑器。是设计好的吗?有解决方法吗?