如何使用户必须输入名字和姓氏,如果其中一个未输入,用户将收到错误消息。
我正在为控制台(ConsoleApp)编写,我自己做不到
如何使用户必须输入名字和姓氏,如果其中一个未输入,用户将收到错误消息。
我正在为控制台(ConsoleApp)编写,我自己做不到
我正在尝试通过在输入中添加四个数字来重新构建一个用于玩井字游戏的网络。那些。事实证明,输入是一个字段和四个附加数字。调用Concatenate方法时,执行崩溃:
A `Concatenate` layer requires inputs with matching shapes except for the concatenation axis. Received: input_shape=[(None, 5, 5), (None, 4)]
告诉我如何修复这个错误。
网:
class TicTacToeNNet():
def __init__(self, game, args):
# game params
self.board_x, self.board_y = game.getBoardSize()
self.action_size = game.getActionSize()
self.args = args
# Neural Net
input1 = Input(shape=(self.board_x, self.board_y)) # s: batch_size x board_x x board_y
input2 = Input(shape=(4,))
merged = Concatenate(axis=1)([input1, input2])
h_conv1 = Activation('relu')(BatchNormalization(axis=3)(Conv2D(args.num_channels, 3, padding='same')(merged))) # batch_size x board_x x board_y x num_channels
h_conv2 = Activation('relu')(BatchNormalization(axis=3)(Conv2D(args.num_channels, 3, padding='same')(h_conv1))) # batch_size x board_x x board_y x num_channels
h_conv3 = Activation('relu')(BatchNormalization(axis=3)(Conv2D(args.num_channels, 3, padding='same')(h_conv2))) # batch_size x (board_x) x (board_y) x num_channels
h_conv4 = Activation('relu')(BatchNormalization(axis=3)(Conv2D(args.num_channels, 3, padding='valid')(h_conv3))) # batch_size x (board_x-2) x (board_y-2) x num_channels
h_conv4_flat = Flatten()(h_conv4)
s_fc1 = Dropout(args.dropout)(Activation('relu')(BatchNormalization(axis=1)(Dense(1024)(h_conv4_flat)))) # batch_size x 1024
s_fc2 = Dropout(args.dropout)(Activation('relu')(BatchNormalization(axis=1)(Dense(512)(s_fc1)))) # batch_size x 1024
self.pi = Dense(self.action_size, activation='softmax', name='pi')(s_fc2) # batch_size x self.action_size
self.v = Dense(1, activation='tanh', name='v')(s_fc2) # batch_size x 1
self.model = Model(inputs=self.input_boards, outputs=[self.pi, self.v])
self.model.compile(loss=['categorical_crossentropy','mean_squared_error'], optimizer=Adam(args.lr))
for host in hosts:
with open(f'current_{host}', 'r') as ex_ports:
ex_ports = ex_ports.readlines()
for line in ex_ports:
ports.append(line.strip('\n').strip())
with open(f'current_{host}', 'w') as c_host:
print (f'{host} : {ports}')
for port in range(1, 65535):
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(1)
result = sock.connect_ex((host, port))
if result == 0:
if port not in ports:
message = f"Host: {host}, Port: {port} is open."
# send_telegram_message(telegram_token, chat_id, message)
print (port)
c_host.write (f'{port}\n')
为什么支票不起作用if not in?我之前用过类似的方法,一切正常。这段代码列出了所有开放的端口,不关注这个比较。
我编写了可以正常工作的代码。但是,当使用auto-py-to-exe创建.exe并运行它时,我收到错误:
ModuleNotFoundError: No module named 'pystray'
pystray模块已安装。为了解决该错误,我使用pyinstaller重建了exe文件。问题已解决,文件运行正常。然而,现在出现了新的困难——运行.exe时,程序启动会延迟3-4秒,而原来的.py会立即打开。
如何加快.exe的启动速度并消除延迟?
当我用 C# 发布应用程序时,所有文件都会复制到输出目录,除了我自己创建的 appsettings.json 或程序的各种资源所在的任何其他目录(图片、声音等),因此,例如,appsettings 被复制到输出目录 .json 你必须在项目文件中写入以下内容
<ItemGroup>
<None Update="appsettings.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
对于目录也是如此,我想知道这是否是正常做法,或者是否有必要做一些不同的事情?