小编Jam*_*mes的帖子

**用C语言做什么

我是C的新手,具有良好的java背景,我正在尝试理解指针和数组.

我知道下标operator[]是数组定义的一部分,所以:

int numbers[] = {1,3,4,5};
Run Code Online (Sandbox Code Playgroud)

会创建一个整数数组,它将在内存中表示为16个字节,4个4个字节:

numbers[0] = 1, address 0061FF1C
numbers[1] = 3, address 0061FF20
numbers[2] = 4, address 0061FF24
numbers[3] = 5, address 0061FF28
Run Code Online (Sandbox Code Playgroud)

但是,当涉及指针时,我的知识开始崩溃,所以如果我要创建一个指向数组数字的指针,我将执行以下操作:

int *pNumbers = &numbers[0];
Run Code Online (Sandbox Code Playgroud)

看起来像这样:

指向数字的指针

而且我猜它的大小是4字节?

然而,**我读作"指针指针"对我来说没有意义,为什么有人想要指针指针,当然如果a-> b-> c然后a-> c就足够了?我知道我错过了一些东西,它必须与数组有关,argv可以是类型char[ ]char **下面看到的:

int main(int argc, char **argv){}
Run Code Online (Sandbox Code Playgroud)

所以:

  • 这是什么(**)?
  • 它有什么用途?
  • 它在记忆中如何表现?

c memory arrays pointers

37
推荐指数
6
解决办法
4万
查看次数

神经网络backprop没有完全训练

我有这样的神经网络,我训练过看到它,它起作用,或者至少看起来有效,但问题在于训练.我正在尝试训练它作为OR门,但它似乎永远不会到达那里,输出往往看起来像这样:

prior to training:

 [[0.50181624]
 [0.50183743]
 [0.50180414]
 [0.50182533]]

post training:

 [[0.69641759]
 [0.754652  ]
 [0.75447178]
 [0.79431198]]

expected output:

 [[0]
 [1]
 [1]
 [1]]
Run Code Online (Sandbox Code Playgroud)

我有这个损失图:

在此输入图像描述

奇怪的是它似乎是训练,但同时还没有达到预期的输出.我知道它永远不会真正实现0和1,但同时我希望它能够管理并获得更接近预期输出的东西.

我有一些问题试图找出如何支持错误,因为我想让这个网络有任意数量的隐藏层,所以我将局部渐变存储在一个层中,沿着权重,并从末尾发送错误背部.

我怀疑的主要功能是NeuralNetwork.train和两种前进方法.

import sys
import math
import numpy as np
import matplotlib.pyplot as plt
from itertools import product


class NeuralNetwork:
    class __Layer:
        def __init__(self,args):
            self.__epsilon = 1e-6
            self.localGrad = 0
            self.__weights = np.random.randn(
                args["previousLayerHeight"],
                args["height"]
            )*0.01
            self.__biases = np.zeros(
                (args["biasHeight"],1)
            )

        def __str__(self):
            return str(self.__weights)

        def forward(self,X):
            a = np.dot(X, self.__weights) + self.__biases
            self.localGrad = np.dot(X.T,self.__sigmoidPrime(a))
            return …
Run Code Online (Sandbox Code Playgroud)

python numpy machine-learning matrix neural-network

10
推荐指数
1
解决办法
232
查看次数

程序在单步执行时有效,但在运行时不运行

我正在编写一个显示航班信息的程序,如下所示:

package d.airlineData.engine;

import java.time.Duration;
import java.time.LocalTime;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map.Entry;

import a.airlineData.exceptions.NoFlightsException;
import c.airlineData.exceptions.NoAirportException;
import d.airlineData.graph.Airport;
import d.airlineData.graph.Flight;
import d.airlineData.graph.FlightGraph;

public class FlightGrapher {

    private FlightGraph fg;

    public FlightGrapher() throws NoFlightsException {      
        throw new NoFlightsException();
    }

    public FlightGrapher(ArrayList<Flight> flights) throws NoFlightsException  {
        fg = new FlightGraph();

        for(Flight flight: flights) {
            fg.addAirport(flight.getAirportA());
            fg.addAirport(flight.getAirportB());

            try {
                fg.addFlight(flight);
            } catch (NoAirportException e) {
                System.err.println(e.getMessage());
                e.printStackTrace();
            }
        }
    }

    public void printAll() {
        HashSet<Airport> airports = fg.getAirports(); …
Run Code Online (Sandbox Code Playgroud)

java

5
推荐指数
1
解决办法
220
查看次数

编译器如何确定sml中的类型

我已经获得了以下代码,并且我被要求确定类型.

exception Break;
fn f => fn a => fn b =>
    (f(raise Break)
       handle Break => if (f a) then a else raise Break)
          handle Break => if not(f a) then a else b;
Run Code Online (Sandbox Code Playgroud)

我知道这个函数接受f,a和b并在所有实例中输出a所以它必须等于:

fn f => fn a => fn b => a
Run Code Online (Sandbox Code Playgroud)

其类型:

'a -> 'b -> 'c -> 'b
Run Code Online (Sandbox Code Playgroud)

因为'if(fa)'我们可以得出'a必须是一个接受类型'b的函数并输出一个布尔值,否则它将不起作用.

('b->bool) -> 'b -> 'c -> 'b
Run Code Online (Sandbox Code Playgroud)

这样做'a是开始:

('a->bool) -> 'a -> 'b -> 'a
Run Code Online (Sandbox Code Playgroud)

是我得到的最终答案.但是,当我在命令提示符下键入它时,我得到以下类型:

(bool->bool) -> bool -> bool -> bool
Run Code Online (Sandbox Code Playgroud)

我错过了什么?'a和'b(来自我的最终类型评估)在什么时候专注于bool?

types sml smlnj

3
推荐指数
1
解决办法
200
查看次数

哪个对象最适合做时间操作

我的任务是编写一个记录飞行数据的程序,所以我决定制作一个飞行物体.

在此对象内是出发时间和到达时间.我不确定哪个对象最适合用于此,我希望将时间存储在24小时(hh:mm)时间内,并能够以小时和分钟计算飞行持续时间(hh:mm) ,我看过文档,我遇到了3个不同的时间对象.

1 java.util.Date

  • 没用,因为它包含太多的信息,如年份和月份,这是制作图表的一个非常基本的程序,而且大多数数据操作都使用longs.

2 java.sql.Date

  • 不包含以我想要的相同比例处理时间的构造函数,并使用longs进行操作.

3 java.sql.Time

  • 似乎有正确的构造函数,它是"已弃用".而且我确定我在某个地方读到它意味着在以后的版本中不再支持它并且使用它们是不好的做法.这又让我失去了Time(long)构造函数.对我来说不是很有用,因为这意味着我需要在创造时间之前将每次转换为多头.

TL;博士:

是否有任何库可以创建一个看起来像这样的时间

(pseudocode):
Object time = new Constructor(23,11) 
Run Code Online (Sandbox Code Playgroud)

这不是"弃用"所以我不必先转换为long.或者,我必须自己制作Object

java datetime

2
推荐指数
2
解决办法
147
查看次数

C中可变大小的二维数组

所以我一直在尝试将 PPM 文件存储在要操作的程序中,我成功地存储了直到颜色的所有内容,我在颜色方面取得了进展。

在询问有关堆栈溢出( For 循环无缘无故停止)的问题时,我确信我的方法有点粗制滥造,但是我不明白使用以下内容的原因:

COLOR (*colors)[width] = malloc( sizeof(COLOR[height][width]) );
Run Code Online (Sandbox Code Playgroud)

有人可以准确地分解这行代码在做什么并解释它是什么类型吗?所以我可以将它存储在一个结构中并成功返回它。

示例:以前我使用指针到指针,我分配了一个高度,并为每个指针分配了一个宽度。这意味着我可以为每个指针创建一个颜色,沿着宽度递增它直到最后,然后重置指针并递增高度和循环。获得完整图像后,我将其返回以将其存储在以下位置:

typedef struct {
    char code[CODE_LENGTH];
    COMMENT *commentPPM;
    int width, height, max;
    COLOR **colorValues;
} PPM;
Run Code Online (Sandbox Code Playgroud)

使用:

ppmFile->colorValues = getColors(fd, ppmFile->width, ppmFile->height);
Run Code Online (Sandbox Code Playgroud)

typedef struct{
    int red, green, blue;
} COLOR;

COLOR * getNextColor(FILE *fd);

COLOR **getColors(FILE *fd, int width, int height){
    printf("\nentered get colors");
    COLOR **colors = malloc(sizeof(COLOR*)*height);
    printf("\nallocated %d space height",height);

    int i,j;
    for(i = 0; i < height; i++, colors++){
        *colors = malloc(sizeof(COLOR)*width); …
Run Code Online (Sandbox Code Playgroud)

c arrays pointers

2
推荐指数
1
解决办法
1258
查看次数